function __vite_legacy_guard() {
  import.meta.url;
  import("_").catch(() => 1);
  async function* g() {
  }
  ;
}
;
(function polyfill() {
  const relList = document.createElement("link").relList;
  if (relList && relList.supports && relList.supports("modulepreload")) {
    return;
  }
  for (const link of document.querySelectorAll('link[rel="modulepreload"]')) {
    processPreload(link);
  }
  new MutationObserver((mutations) => {
    for (const mutation of mutations) {
      if (mutation.type !== "childList") {
        continue;
      }
      for (const node of mutation.addedNodes) {
        if (node.tagName === "LINK" && node.rel === "modulepreload")
          processPreload(node);
      }
    }
  }).observe(document, { childList: true, subtree: true });
  function getFetchOpts(link) {
    const fetchOpts = {};
    if (link.integrity)
      fetchOpts.integrity = link.integrity;
    if (link.referrerPolicy)
      fetchOpts.referrerPolicy = link.referrerPolicy;
    if (link.crossOrigin === "use-credentials")
      fetchOpts.credentials = "include";
    else if (link.crossOrigin === "anonymous")
      fetchOpts.credentials = "omit";
    else
      fetchOpts.credentials = "same-origin";
    return fetchOpts;
  }
  function processPreload(link) {
    if (link.ep)
      return;
    link.ep = true;
    const fetchOpts = getFetchOpts(link);
    fetch(link.href, fetchOpts);
  }
})();
const font = "";
const style = "";
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
var swiper$1 = { exports: {} };
(function(module2, exports2) {
  (function(global2, factory) {
    module2.exports = factory();
  })(commonjsGlobal, function() {
    var doc2 = typeof document === "undefined" ? {
      body: {},
      addEventListener: function addEventListener3() {
      },
      removeEventListener: function removeEventListener3() {
      },
      activeElement: {
        blur: function blur2() {
        },
        nodeName: ""
      },
      querySelector: function querySelector2() {
        return null;
      },
      querySelectorAll: function querySelectorAll2() {
        return [];
      },
      getElementById: function getElementById2() {
        return null;
      },
      createEvent: function createEvent2() {
        return {
          initEvent: function initEvent() {
          }
        };
      },
      createElement: function createElement2() {
        return {
          children: [],
          childNodes: [],
          style: {},
          setAttribute: function setAttribute() {
          },
          getElementsByTagName: function getElementsByTagName() {
            return [];
          }
        };
      },
      location: { hash: "" }
    } : document;
    var win2 = typeof window === "undefined" ? {
      document: doc2,
      navigator: {
        userAgent: ""
      },
      location: {},
      history: {},
      CustomEvent: function CustomEvent3() {
        return this;
      },
      addEventListener: function addEventListener3() {
      },
      removeEventListener: function removeEventListener3() {
      },
      getComputedStyle: function getComputedStyle2() {
        return {
          getPropertyValue: function getPropertyValue() {
            return "";
          }
        };
      },
      Image: function Image2() {
      },
      Date: function Date3() {
      },
      screen: {},
      setTimeout: function setTimeout3() {
      },
      clearTimeout: function clearTimeout3() {
      }
    } : window;
    var Dom72 = function Dom73(arr) {
      var self2 = this;
      for (var i = 0; i < arr.length; i += 1) {
        self2[i] = arr[i];
      }
      self2.length = arr.length;
      return this;
    };
    function $2(selector, context) {
      var arr = [];
      var i = 0;
      if (selector && !context) {
        if (selector instanceof Dom72) {
          return selector;
        }
      }
      if (selector) {
        if (typeof selector === "string") {
          var els;
          var tempParent;
          var html3 = selector.trim();
          if (html3.indexOf("<") >= 0 && html3.indexOf(">") >= 0) {
            var toCreate = "div";
            if (html3.indexOf("<li") === 0) {
              toCreate = "ul";
            }
            if (html3.indexOf("<tr") === 0) {
              toCreate = "tbody";
            }
            if (html3.indexOf("<td") === 0 || html3.indexOf("<th") === 0) {
              toCreate = "tr";
            }
            if (html3.indexOf("<tbody") === 0) {
              toCreate = "table";
            }
            if (html3.indexOf("<option") === 0) {
              toCreate = "select";
            }
            tempParent = doc2.createElement(toCreate);
            tempParent.innerHTML = html3;
            for (i = 0; i < tempParent.childNodes.length; i += 1) {
              arr.push(tempParent.childNodes[i]);
            }
          } else {
            if (!context && selector[0] === "#" && !selector.match(/[ .<>:~]/)) {
              els = [doc2.getElementById(selector.trim().split("#")[1])];
            } else {
              els = (context || doc2).querySelectorAll(selector.trim());
            }
            for (i = 0; i < els.length; i += 1) {
              if (els[i]) {
                arr.push(els[i]);
              }
            }
          }
        } else if (selector.nodeType || selector === win2 || selector === doc2) {
          arr.push(selector);
        } else if (selector.length > 0 && selector[0].nodeType) {
          for (i = 0; i < selector.length; i += 1) {
            arr.push(selector[i]);
          }
        }
      }
      return new Dom72(arr);
    }
    $2.fn = Dom72.prototype;
    $2.Class = Dom72;
    $2.Dom7 = Dom72;
    function unique2(arr) {
      var uniqueArray = [];
      for (var i = 0; i < arr.length; i += 1) {
        if (uniqueArray.indexOf(arr[i]) === -1) {
          uniqueArray.push(arr[i]);
        }
      }
      return uniqueArray;
    }
    function addClass2(className) {
      if (typeof className === "undefined") {
        return this;
      }
      var classes3 = className.split(" ");
      for (var i = 0; i < classes3.length; i += 1) {
        for (var j = 0; j < this.length; j += 1) {
          if (typeof this[j] !== "undefined" && typeof this[j].classList !== "undefined") {
            this[j].classList.add(classes3[i]);
          }
        }
      }
      return this;
    }
    function removeClass2(className) {
      var classes3 = className.split(" ");
      for (var i = 0; i < classes3.length; i += 1) {
        for (var j = 0; j < this.length; j += 1) {
          if (typeof this[j] !== "undefined" && typeof this[j].classList !== "undefined") {
            this[j].classList.remove(classes3[i]);
          }
        }
      }
      return this;
    }
    function hasClass2(className) {
      if (!this[0]) {
        return false;
      }
      return this[0].classList.contains(className);
    }
    function toggleClass2(className) {
      var classes3 = className.split(" ");
      for (var i = 0; i < classes3.length; i += 1) {
        for (var j = 0; j < this.length; j += 1) {
          if (typeof this[j] !== "undefined" && typeof this[j].classList !== "undefined") {
            this[j].classList.toggle(classes3[i]);
          }
        }
      }
      return this;
    }
    function attr2(attrs, value) {
      var arguments$1 = arguments;
      if (arguments.length === 1 && typeof attrs === "string") {
        if (this[0]) {
          return this[0].getAttribute(attrs);
        }
        return void 0;
      }
      for (var i = 0; i < this.length; i += 1) {
        if (arguments$1.length === 2) {
          this[i].setAttribute(attrs, value);
        } else {
          for (var attrName in attrs) {
            this[i][attrName] = attrs[attrName];
            this[i].setAttribute(attrName, attrs[attrName]);
          }
        }
      }
      return this;
    }
    function removeAttr2(attr3) {
      for (var i = 0; i < this.length; i += 1) {
        this[i].removeAttribute(attr3);
      }
      return this;
    }
    function data2(key, value) {
      var el;
      if (typeof value === "undefined") {
        el = this[0];
        if (el) {
          if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {
            return el.dom7ElementDataStorage[key];
          }
          var dataKey = el.getAttribute("data-" + key);
          if (dataKey) {
            return dataKey;
          }
          return void 0;
        }
        return void 0;
      }
      for (var i = 0; i < this.length; i += 1) {
        el = this[i];
        if (!el.dom7ElementDataStorage) {
          el.dom7ElementDataStorage = {};
        }
        el.dom7ElementDataStorage[key] = value;
      }
      return this;
    }
    function transform2(transform3) {
      for (var i = 0; i < this.length; i += 1) {
        var elStyle = this[i].style;
        elStyle.webkitTransform = transform3;
        elStyle.transform = transform3;
      }
      return this;
    }
    function transition2(duration) {
      if (typeof duration !== "string") {
        duration = duration + "ms";
      }
      for (var i = 0; i < this.length; i += 1) {
        var elStyle = this[i].style;
        elStyle.webkitTransitionDuration = duration;
        elStyle.transitionDuration = duration;
      }
      return this;
    }
    function on2() {
      var assign;
      var args = [], len = arguments.length;
      while (len--)
        args[len] = arguments[len];
      var eventType = args[0];
      var targetSelector = args[1];
      var listener = args[2];
      var capture = args[3];
      if (typeof args[1] === "function") {
        assign = args, eventType = assign[0], listener = assign[1], capture = assign[2];
        targetSelector = void 0;
      }
      if (!capture) {
        capture = false;
      }
      function handleLiveEvent(e) {
        var target = e.target;
        if (!target) {
          return;
        }
        var eventData = e.target.dom7EventData || [];
        if (eventData.indexOf(e) < 0) {
          eventData.unshift(e);
        }
        if ($2(target).is(targetSelector)) {
          listener.apply(target, eventData);
        } else {
          var parents3 = $2(target).parents();
          for (var k = 0; k < parents3.length; k += 1) {
            if ($2(parents3[k]).is(targetSelector)) {
              listener.apply(parents3[k], eventData);
            }
          }
        }
      }
      function handleEvent(e) {
        var eventData = e && e.target ? e.target.dom7EventData || [] : [];
        if (eventData.indexOf(e) < 0) {
          eventData.unshift(e);
        }
        listener.apply(this, eventData);
      }
      var events3 = eventType.split(" ");
      var j;
      for (var i = 0; i < this.length; i += 1) {
        var el = this[i];
        if (!targetSelector) {
          for (j = 0; j < events3.length; j += 1) {
            var event = events3[j];
            if (!el.dom7Listeners) {
              el.dom7Listeners = {};
            }
            if (!el.dom7Listeners[event]) {
              el.dom7Listeners[event] = [];
            }
            el.dom7Listeners[event].push({
              listener,
              proxyListener: handleEvent
            });
            el.addEventListener(event, handleEvent, capture);
          }
        } else {
          for (j = 0; j < events3.length; j += 1) {
            var event$1 = events3[j];
            if (!el.dom7LiveListeners) {
              el.dom7LiveListeners = {};
            }
            if (!el.dom7LiveListeners[event$1]) {
              el.dom7LiveListeners[event$1] = [];
            }
            el.dom7LiveListeners[event$1].push({
              listener,
              proxyListener: handleLiveEvent
            });
            el.addEventListener(event$1, handleLiveEvent, capture);
          }
        }
      }
      return this;
    }
    function off2() {
      var assign;
      var args = [], len = arguments.length;
      while (len--)
        args[len] = arguments[len];
      var eventType = args[0];
      var targetSelector = args[1];
      var listener = args[2];
      var capture = args[3];
      if (typeof args[1] === "function") {
        assign = args, eventType = assign[0], listener = assign[1], capture = assign[2];
        targetSelector = void 0;
      }
      if (!capture) {
        capture = false;
      }
      var events3 = eventType.split(" ");
      for (var i = 0; i < events3.length; i += 1) {
        var event = events3[i];
        for (var j = 0; j < this.length; j += 1) {
          var el = this[j];
          var handlers = void 0;
          if (!targetSelector && el.dom7Listeners) {
            handlers = el.dom7Listeners[event];
          } else if (targetSelector && el.dom7LiveListeners) {
            handlers = el.dom7LiveListeners[event];
          }
          if (handlers && handlers.length) {
            for (var k = handlers.length - 1; k >= 0; k -= 1) {
              var handler = handlers[k];
              if (listener && handler.listener === listener) {
                el.removeEventListener(event, handler.proxyListener, capture);
                handlers.splice(k, 1);
              } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
                el.removeEventListener(event, handler.proxyListener, capture);
                handlers.splice(k, 1);
              } else if (!listener) {
                el.removeEventListener(event, handler.proxyListener, capture);
                handlers.splice(k, 1);
              }
            }
          }
        }
      }
      return this;
    }
    function trigger2() {
      var args = [], len = arguments.length;
      while (len--)
        args[len] = arguments[len];
      var events3 = args[0].split(" ");
      var eventData = args[1];
      for (var i = 0; i < events3.length; i += 1) {
        var event = events3[i];
        for (var j = 0; j < this.length; j += 1) {
          var el = this[j];
          var evt = void 0;
          try {
            evt = new win2.CustomEvent(event, {
              detail: eventData,
              bubbles: true,
              cancelable: true
            });
          } catch (e) {
            evt = doc2.createEvent("Event");
            evt.initEvent(event, true, true);
            evt.detail = eventData;
          }
          el.dom7EventData = args.filter(function(data3, dataIndex) {
            return dataIndex > 0;
          });
          el.dispatchEvent(evt);
          el.dom7EventData = [];
          delete el.dom7EventData;
        }
      }
      return this;
    }
    function transitionEnd2(callback) {
      var events3 = ["webkitTransitionEnd", "transitionend"];
      var dom = this;
      var i;
      function fireCallBack(e) {
        if (e.target !== this) {
          return;
        }
        callback.call(this, e);
        for (i = 0; i < events3.length; i += 1) {
          dom.off(events3[i], fireCallBack);
        }
      }
      if (callback) {
        for (i = 0; i < events3.length; i += 1) {
          dom.on(events3[i], fireCallBack);
        }
      }
      return this;
    }
    function outerWidth2(includeMargins) {
      if (this.length > 0) {
        if (includeMargins) {
          var styles3 = this.styles();
          return this[0].offsetWidth + parseFloat(styles3.getPropertyValue("margin-right")) + parseFloat(styles3.getPropertyValue("margin-left"));
        }
        return this[0].offsetWidth;
      }
      return null;
    }
    function outerHeight2(includeMargins) {
      if (this.length > 0) {
        if (includeMargins) {
          var styles3 = this.styles();
          return this[0].offsetHeight + parseFloat(styles3.getPropertyValue("margin-top")) + parseFloat(styles3.getPropertyValue("margin-bottom"));
        }
        return this[0].offsetHeight;
      }
      return null;
    }
    function offset2() {
      if (this.length > 0) {
        var el = this[0];
        var box = el.getBoundingClientRect();
        var body = doc2.body;
        var clientTop = el.clientTop || body.clientTop || 0;
        var clientLeft = el.clientLeft || body.clientLeft || 0;
        var scrollTop = el === win2 ? win2.scrollY : el.scrollTop;
        var scrollLeft = el === win2 ? win2.scrollX : el.scrollLeft;
        return {
          top: box.top + scrollTop - clientTop,
          left: box.left + scrollLeft - clientLeft
        };
      }
      return null;
    }
    function styles2() {
      if (this[0]) {
        return win2.getComputedStyle(this[0], null);
      }
      return {};
    }
    function css2(props, value) {
      var i;
      if (arguments.length === 1) {
        if (typeof props === "string") {
          if (this[0]) {
            return win2.getComputedStyle(this[0], null).getPropertyValue(props);
          }
        } else {
          for (i = 0; i < this.length; i += 1) {
            for (var prop in props) {
              this[i].style[prop] = props[prop];
            }
          }
          return this;
        }
      }
      if (arguments.length === 2 && typeof props === "string") {
        for (i = 0; i < this.length; i += 1) {
          this[i].style[props] = value;
        }
        return this;
      }
      return this;
    }
    function each2(callback) {
      if (!callback) {
        return this;
      }
      for (var i = 0; i < this.length; i += 1) {
        if (callback.call(this[i], i, this[i]) === false) {
          return this;
        }
      }
      return this;
    }
    function html2(html3) {
      if (typeof html3 === "undefined") {
        return this[0] ? this[0].innerHTML : void 0;
      }
      for (var i = 0; i < this.length; i += 1) {
        this[i].innerHTML = html3;
      }
      return this;
    }
    function text2(text3) {
      if (typeof text3 === "undefined") {
        if (this[0]) {
          return this[0].textContent.trim();
        }
        return null;
      }
      for (var i = 0; i < this.length; i += 1) {
        this[i].textContent = text3;
      }
      return this;
    }
    function is2(selector) {
      var el = this[0];
      var compareWith;
      var i;
      if (!el || typeof selector === "undefined") {
        return false;
      }
      if (typeof selector === "string") {
        if (el.matches) {
          return el.matches(selector);
        } else if (el.webkitMatchesSelector) {
          return el.webkitMatchesSelector(selector);
        } else if (el.msMatchesSelector) {
          return el.msMatchesSelector(selector);
        }
        compareWith = $2(selector);
        for (i = 0; i < compareWith.length; i += 1) {
          if (compareWith[i] === el) {
            return true;
          }
        }
        return false;
      } else if (selector === doc2) {
        return el === doc2;
      } else if (selector === win2) {
        return el === win2;
      }
      if (selector.nodeType || selector instanceof Dom72) {
        compareWith = selector.nodeType ? [selector] : selector;
        for (i = 0; i < compareWith.length; i += 1) {
          if (compareWith[i] === el) {
            return true;
          }
        }
        return false;
      }
      return false;
    }
    function index2() {
      var child = this[0];
      var i;
      if (child) {
        i = 0;
        while ((child = child.previousSibling) !== null) {
          if (child.nodeType === 1) {
            i += 1;
          }
        }
        return i;
      }
      return void 0;
    }
    function eq2(index3) {
      if (typeof index3 === "undefined") {
        return this;
      }
      var length = this.length;
      var returnIndex;
      if (index3 > length - 1) {
        return new Dom72([]);
      }
      if (index3 < 0) {
        returnIndex = length + index3;
        if (returnIndex < 0) {
          return new Dom72([]);
        }
        return new Dom72([this[returnIndex]]);
      }
      return new Dom72([this[index3]]);
    }
    function append2() {
      var args = [], len = arguments.length;
      while (len--)
        args[len] = arguments[len];
      var newChild;
      for (var k = 0; k < args.length; k += 1) {
        newChild = args[k];
        for (var i = 0; i < this.length; i += 1) {
          if (typeof newChild === "string") {
            var tempDiv = doc2.createElement("div");
            tempDiv.innerHTML = newChild;
            while (tempDiv.firstChild) {
              this[i].appendChild(tempDiv.firstChild);
            }
          } else if (newChild instanceof Dom72) {
            for (var j = 0; j < newChild.length; j += 1) {
              this[i].appendChild(newChild[j]);
            }
          } else {
            this[i].appendChild(newChild);
          }
        }
      }
      return this;
    }
    function prepend2(newChild) {
      var i;
      var j;
      for (i = 0; i < this.length; i += 1) {
        if (typeof newChild === "string") {
          var tempDiv = doc2.createElement("div");
          tempDiv.innerHTML = newChild;
          for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
            this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
          }
        } else if (newChild instanceof Dom72) {
          for (j = 0; j < newChild.length; j += 1) {
            this[i].insertBefore(newChild[j], this[i].childNodes[0]);
          }
        } else {
          this[i].insertBefore(newChild, this[i].childNodes[0]);
        }
      }
      return this;
    }
    function next2(selector) {
      if (this.length > 0) {
        if (selector) {
          if (this[0].nextElementSibling && $2(this[0].nextElementSibling).is(selector)) {
            return new Dom72([this[0].nextElementSibling]);
          }
          return new Dom72([]);
        }
        if (this[0].nextElementSibling) {
          return new Dom72([this[0].nextElementSibling]);
        }
        return new Dom72([]);
      }
      return new Dom72([]);
    }
    function nextAll2(selector) {
      var nextEls = [];
      var el = this[0];
      if (!el) {
        return new Dom72([]);
      }
      while (el.nextElementSibling) {
        var next3 = el.nextElementSibling;
        if (selector) {
          if ($2(next3).is(selector)) {
            nextEls.push(next3);
          }
        } else {
          nextEls.push(next3);
        }
        el = next3;
      }
      return new Dom72(nextEls);
    }
    function prev2(selector) {
      if (this.length > 0) {
        var el = this[0];
        if (selector) {
          if (el.previousElementSibling && $2(el.previousElementSibling).is(selector)) {
            return new Dom72([el.previousElementSibling]);
          }
          return new Dom72([]);
        }
        if (el.previousElementSibling) {
          return new Dom72([el.previousElementSibling]);
        }
        return new Dom72([]);
      }
      return new Dom72([]);
    }
    function prevAll2(selector) {
      var prevEls = [];
      var el = this[0];
      if (!el) {
        return new Dom72([]);
      }
      while (el.previousElementSibling) {
        var prev3 = el.previousElementSibling;
        if (selector) {
          if ($2(prev3).is(selector)) {
            prevEls.push(prev3);
          }
        } else {
          prevEls.push(prev3);
        }
        el = prev3;
      }
      return new Dom72(prevEls);
    }
    function parent2(selector) {
      var parents3 = [];
      for (var i = 0; i < this.length; i += 1) {
        if (this[i].parentNode !== null) {
          if (selector) {
            if ($2(this[i].parentNode).is(selector)) {
              parents3.push(this[i].parentNode);
            }
          } else {
            parents3.push(this[i].parentNode);
          }
        }
      }
      return $2(unique2(parents3));
    }
    function parents2(selector) {
      var parents3 = [];
      for (var i = 0; i < this.length; i += 1) {
        var parent3 = this[i].parentNode;
        while (parent3) {
          if (selector) {
            if ($2(parent3).is(selector)) {
              parents3.push(parent3);
            }
          } else {
            parents3.push(parent3);
          }
          parent3 = parent3.parentNode;
        }
      }
      return $2(unique2(parents3));
    }
    function closest2(selector) {
      var closest3 = this;
      if (typeof selector === "undefined") {
        return new Dom72([]);
      }
      if (!closest3.is(selector)) {
        closest3 = closest3.parents(selector).eq(0);
      }
      return closest3;
    }
    function find2(selector) {
      var foundElements = [];
      for (var i = 0; i < this.length; i += 1) {
        var found = this[i].querySelectorAll(selector);
        for (var j = 0; j < found.length; j += 1) {
          foundElements.push(found[j]);
        }
      }
      return new Dom72(foundElements);
    }
    function children2(selector) {
      var children3 = [];
      for (var i = 0; i < this.length; i += 1) {
        var childNodes = this[i].childNodes;
        for (var j = 0; j < childNodes.length; j += 1) {
          if (!selector) {
            if (childNodes[j].nodeType === 1) {
              children3.push(childNodes[j]);
            }
          } else if (childNodes[j].nodeType === 1 && $2(childNodes[j]).is(selector)) {
            children3.push(childNodes[j]);
          }
        }
      }
      return new Dom72(unique2(children3));
    }
    function remove2() {
      for (var i = 0; i < this.length; i += 1) {
        if (this[i].parentNode) {
          this[i].parentNode.removeChild(this[i]);
        }
      }
      return this;
    }
    function add2() {
      var args = [], len = arguments.length;
      while (len--)
        args[len] = arguments[len];
      var dom = this;
      var i;
      var j;
      for (i = 0; i < args.length; i += 1) {
        var toAdd = $2(args[i]);
        for (j = 0; j < toAdd.length; j += 1) {
          dom[dom.length] = toAdd[j];
          dom.length += 1;
        }
      }
      return dom;
    }
    var Methods2 = {
      addClass: addClass2,
      removeClass: removeClass2,
      hasClass: hasClass2,
      toggleClass: toggleClass2,
      attr: attr2,
      removeAttr: removeAttr2,
      data: data2,
      transform: transform2,
      transition: transition2,
      on: on2,
      off: off2,
      trigger: trigger2,
      transitionEnd: transitionEnd2,
      outerWidth: outerWidth2,
      outerHeight: outerHeight2,
      offset: offset2,
      css: css2,
      each: each2,
      html: html2,
      text: text2,
      is: is2,
      index: index2,
      eq: eq2,
      append: append2,
      prepend: prepend2,
      next: next2,
      nextAll: nextAll2,
      prev: prev2,
      prevAll: prevAll2,
      parent: parent2,
      parents: parents2,
      closest: closest2,
      find: find2,
      children: children2,
      remove: remove2,
      add: add2,
      styles: styles2
    };
    Object.keys(Methods2).forEach(function(methodName) {
      $2.fn[methodName] = $2.fn[methodName] || Methods2[methodName];
    });
    var Utils2 = {
      deleteProps: function deleteProps(obj) {
        var object = obj;
        Object.keys(object).forEach(function(key) {
          try {
            object[key] = null;
          } catch (e) {
          }
          try {
            delete object[key];
          } catch (e) {
          }
        });
      },
      nextTick: function nextTick(callback, delay) {
        if (delay === void 0)
          delay = 0;
        return setTimeout(callback, delay);
      },
      now: function now2() {
        return Date.now();
      },
      getTranslate: function getTranslate3(el, axis) {
        if (axis === void 0)
          axis = "x";
        var matrix;
        var curTransform;
        var transformMatrix;
        var curStyle = win2.getComputedStyle(el, null);
        if (win2.WebKitCSSMatrix) {
          curTransform = curStyle.transform || curStyle.webkitTransform;
          if (curTransform.split(",").length > 6) {
            curTransform = curTransform.split(", ").map(function(a) {
              return a.replace(",", ".");
            }).join(", ");
          }
          transformMatrix = new win2.WebKitCSSMatrix(curTransform === "none" ? "" : curTransform);
        } else {
          transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,");
          matrix = transformMatrix.toString().split(",");
        }
        if (axis === "x") {
          if (win2.WebKitCSSMatrix) {
            curTransform = transformMatrix.m41;
          } else if (matrix.length === 16) {
            curTransform = parseFloat(matrix[12]);
          } else {
            curTransform = parseFloat(matrix[4]);
          }
        }
        if (axis === "y") {
          if (win2.WebKitCSSMatrix) {
            curTransform = transformMatrix.m42;
          } else if (matrix.length === 16) {
            curTransform = parseFloat(matrix[13]);
          } else {
            curTransform = parseFloat(matrix[5]);
          }
        }
        return curTransform || 0;
      },
      parseUrlQuery: function parseUrlQuery(url) {
        var query = {};
        var urlToParse = url || win2.location.href;
        var i;
        var params;
        var param;
        var length;
        if (typeof urlToParse === "string" && urlToParse.length) {
          urlToParse = urlToParse.indexOf("?") > -1 ? urlToParse.replace(/\S*\?/, "") : "";
          params = urlToParse.split("&").filter(function(paramsPart) {
            return paramsPart !== "";
          });
          length = params.length;
          for (i = 0; i < length; i += 1) {
            param = params[i].replace(/#\S+/g, "").split("=");
            query[decodeURIComponent(param[0])] = typeof param[1] === "undefined" ? void 0 : decodeURIComponent(param[1]) || "";
          }
        }
        return query;
      },
      isObject: function isObject2(o) {
        return typeof o === "object" && o !== null && o.constructor && o.constructor === Object;
      },
      extend: function extend2() {
        var args = [], len$1 = arguments.length;
        while (len$1--)
          args[len$1] = arguments[len$1];
        var to = Object(args[0]);
        for (var i = 1; i < args.length; i += 1) {
          var nextSource = args[i];
          if (nextSource !== void 0 && nextSource !== null) {
            var keysArray = Object.keys(Object(nextSource));
            for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
              var nextKey = keysArray[nextIndex];
              var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
              if (desc !== void 0 && desc.enumerable) {
                if (Utils2.isObject(to[nextKey]) && Utils2.isObject(nextSource[nextKey])) {
                  Utils2.extend(to[nextKey], nextSource[nextKey]);
                } else if (!Utils2.isObject(to[nextKey]) && Utils2.isObject(nextSource[nextKey])) {
                  to[nextKey] = {};
                  Utils2.extend(to[nextKey], nextSource[nextKey]);
                } else {
                  to[nextKey] = nextSource[nextKey];
                }
              }
            }
          }
        }
        return to;
      }
    };
    var Support3 = function Support4() {
      var testDiv = doc2.createElement("div");
      return {
        touch: win2.Modernizr && win2.Modernizr.touch === true || function checkTouch() {
          return !!(win2.navigator.maxTouchPoints > 0 || "ontouchstart" in win2 || win2.DocumentTouch && doc2 instanceof win2.DocumentTouch);
        }(),
        pointerEvents: !!(win2.navigator.pointerEnabled || win2.PointerEvent || "maxTouchPoints" in win2.navigator && win2.navigator.maxTouchPoints > 0),
        prefixedPointerEvents: !!win2.navigator.msPointerEnabled,
        transition: function checkTransition() {
          var style2 = testDiv.style;
          return "transition" in style2 || "webkitTransition" in style2 || "MozTransition" in style2;
        }(),
        transforms3d: win2.Modernizr && win2.Modernizr.csstransforms3d === true || function checkTransforms3d() {
          var style2 = testDiv.style;
          return "webkitPerspective" in style2 || "MozPerspective" in style2 || "OPerspective" in style2 || "MsPerspective" in style2 || "perspective" in style2;
        }(),
        flexbox: function checkFlexbox() {
          var style2 = testDiv.style;
          var styles3 = "alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient".split(" ");
          for (var i = 0; i < styles3.length; i += 1) {
            if (styles3[i] in style2) {
              return true;
            }
          }
          return false;
        }(),
        observer: function checkObserver() {
          return "MutationObserver" in win2 || "WebkitMutationObserver" in win2;
        }(),
        passiveListener: function checkPassiveListener() {
          var supportsPassive = false;
          try {
            var opts = Object.defineProperty({}, "passive", {
              // eslint-disable-next-line
              get: function get2() {
                supportsPassive = true;
              }
            });
            win2.addEventListener("testPassiveListener", null, opts);
          } catch (e) {
          }
          return supportsPassive;
        }(),
        gestures: function checkGestures() {
          return "ongesturestart" in win2;
        }()
      };
    }();
    var Browser3 = function Browser4() {
      function isSafari() {
        var ua = win2.navigator.userAgent.toLowerCase();
        return ua.indexOf("safari") >= 0 && ua.indexOf("chrome") < 0 && ua.indexOf("android") < 0;
      }
      return {
        isIE: !!win2.navigator.userAgent.match(/Trident/g) || !!win2.navigator.userAgent.match(/MSIE/g),
        isEdge: !!win2.navigator.userAgent.match(/Edge/g),
        isSafari: isSafari(),
        isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win2.navigator.userAgent)
      };
    }();
    var SwiperClass2 = function SwiperClass3(params) {
      if (params === void 0)
        params = {};
      var self2 = this;
      self2.params = params;
      self2.eventsListeners = {};
      if (self2.params && self2.params.on) {
        Object.keys(self2.params.on).forEach(function(eventName) {
          self2.on(eventName, self2.params.on[eventName]);
        });
      }
    };
    var staticAccessors = { components: { configurable: true } };
    SwiperClass2.prototype.on = function on3(events3, handler, priority) {
      var self2 = this;
      if (typeof handler !== "function") {
        return self2;
      }
      var method = priority ? "unshift" : "push";
      events3.split(" ").forEach(function(event) {
        if (!self2.eventsListeners[event]) {
          self2.eventsListeners[event] = [];
        }
        self2.eventsListeners[event][method](handler);
      });
      return self2;
    };
    SwiperClass2.prototype.once = function once(events3, handler, priority) {
      var self2 = this;
      if (typeof handler !== "function") {
        return self2;
      }
      function onceHandler() {
        var args = [], len = arguments.length;
        while (len--)
          args[len] = arguments[len];
        handler.apply(self2, args);
        self2.off(events3, onceHandler);
        if (onceHandler.f7proxy) {
          delete onceHandler.f7proxy;
        }
      }
      onceHandler.f7proxy = handler;
      return self2.on(events3, onceHandler, priority);
    };
    SwiperClass2.prototype.off = function off3(events3, handler) {
      var self2 = this;
      if (!self2.eventsListeners) {
        return self2;
      }
      events3.split(" ").forEach(function(event) {
        if (typeof handler === "undefined") {
          self2.eventsListeners[event] = [];
        } else if (self2.eventsListeners[event] && self2.eventsListeners[event].length) {
          self2.eventsListeners[event].forEach(function(eventHandler, index3) {
            if (eventHandler === handler || eventHandler.f7proxy && eventHandler.f7proxy === handler) {
              self2.eventsListeners[event].splice(index3, 1);
            }
          });
        }
      });
      return self2;
    };
    SwiperClass2.prototype.emit = function emit() {
      var args = [], len = arguments.length;
      while (len--)
        args[len] = arguments[len];
      var self2 = this;
      if (!self2.eventsListeners) {
        return self2;
      }
      var events3;
      var data3;
      var context;
      if (typeof args[0] === "string" || Array.isArray(args[0])) {
        events3 = args[0];
        data3 = args.slice(1, args.length);
        context = self2;
      } else {
        events3 = args[0].events;
        data3 = args[0].data;
        context = args[0].context || self2;
      }
      var eventsArray = Array.isArray(events3) ? events3 : events3.split(" ");
      eventsArray.forEach(function(event) {
        if (self2.eventsListeners && self2.eventsListeners[event]) {
          var handlers = [];
          self2.eventsListeners[event].forEach(function(eventHandler) {
            handlers.push(eventHandler);
          });
          handlers.forEach(function(eventHandler) {
            eventHandler.apply(context, data3);
          });
        }
      });
      return self2;
    };
    SwiperClass2.prototype.useModulesParams = function useModulesParams(instanceParams) {
      var instance = this;
      if (!instance.modules) {
        return;
      }
      Object.keys(instance.modules).forEach(function(moduleName) {
        var module3 = instance.modules[moduleName];
        if (module3.params) {
          Utils2.extend(instanceParams, module3.params);
        }
      });
    };
    SwiperClass2.prototype.useModules = function useModules(modulesParams) {
      if (modulesParams === void 0)
        modulesParams = {};
      var instance = this;
      if (!instance.modules) {
        return;
      }
      Object.keys(instance.modules).forEach(function(moduleName) {
        var module3 = instance.modules[moduleName];
        var moduleParams = modulesParams[moduleName] || {};
        if (module3.instance) {
          Object.keys(module3.instance).forEach(function(modulePropName) {
            var moduleProp = module3.instance[modulePropName];
            if (typeof moduleProp === "function") {
              instance[modulePropName] = moduleProp.bind(instance);
            } else {
              instance[modulePropName] = moduleProp;
            }
          });
        }
        if (module3.on && instance.on) {
          Object.keys(module3.on).forEach(function(moduleEventName) {
            instance.on(moduleEventName, module3.on[moduleEventName]);
          });
        }
        if (module3.create) {
          module3.create.bind(instance)(moduleParams);
        }
      });
    };
    staticAccessors.components.set = function(components3) {
      var Class = this;
      if (!Class.use) {
        return;
      }
      Class.use(components3);
    };
    SwiperClass2.installModule = function installModule(module3) {
      var params = [], len = arguments.length - 1;
      while (len-- > 0)
        params[len] = arguments[len + 1];
      var Class = this;
      if (!Class.prototype.modules) {
        Class.prototype.modules = {};
      }
      var name = module3.name || Object.keys(Class.prototype.modules).length + "_" + Utils2.now();
      Class.prototype.modules[name] = module3;
      if (module3.proto) {
        Object.keys(module3.proto).forEach(function(key) {
          Class.prototype[key] = module3.proto[key];
        });
      }
      if (module3.static) {
        Object.keys(module3.static).forEach(function(key) {
          Class[key] = module3.static[key];
        });
      }
      if (module3.install) {
        module3.install.apply(Class, params);
      }
      return Class;
    };
    SwiperClass2.use = function use(module3) {
      var params = [], len = arguments.length - 1;
      while (len-- > 0)
        params[len] = arguments[len + 1];
      var Class = this;
      if (Array.isArray(module3)) {
        module3.forEach(function(m) {
          return Class.installModule(m);
        });
        return Class;
      }
      return Class.installModule.apply(Class, [module3].concat(params));
    };
    Object.defineProperties(SwiperClass2, staticAccessors);
    function updateSize2() {
      var swiper2 = this;
      var width;
      var height;
      var $el = swiper2.$el;
      if (typeof swiper2.params.width !== "undefined") {
        width = swiper2.params.width;
      } else {
        width = $el[0].clientWidth;
      }
      if (typeof swiper2.params.height !== "undefined") {
        height = swiper2.params.height;
      } else {
        height = $el[0].clientHeight;
      }
      if (width === 0 && swiper2.isHorizontal() || height === 0 && swiper2.isVertical()) {
        return;
      }
      width = width - parseInt($el.css("padding-left"), 10) - parseInt($el.css("padding-right"), 10);
      height = height - parseInt($el.css("padding-top"), 10) - parseInt($el.css("padding-bottom"), 10);
      Utils2.extend(swiper2, {
        width,
        height,
        size: swiper2.isHorizontal() ? width : height
      });
    }
    function updateSlides2() {
      var swiper2 = this;
      var params = swiper2.params;
      var $wrapperEl = swiper2.$wrapperEl;
      var swiperSize = swiper2.size;
      var rtl = swiper2.rtlTranslate;
      var wrongRTL = swiper2.wrongRTL;
      var isVirtual = swiper2.virtual && params.virtual.enabled;
      var previousSlidesLength = isVirtual ? swiper2.virtual.slides.length : swiper2.slides.length;
      var slides = $wrapperEl.children("." + swiper2.params.slideClass);
      var slidesLength = isVirtual ? swiper2.virtual.slides.length : slides.length;
      var snapGrid = [];
      var slidesGrid = [];
      var slidesSizesGrid = [];
      var offsetBefore = params.slidesOffsetBefore;
      if (typeof offsetBefore === "function") {
        offsetBefore = params.slidesOffsetBefore.call(swiper2);
      }
      var offsetAfter = params.slidesOffsetAfter;
      if (typeof offsetAfter === "function") {
        offsetAfter = params.slidesOffsetAfter.call(swiper2);
      }
      var previousSnapGridLength = swiper2.snapGrid.length;
      var previousSlidesGridLength = swiper2.snapGrid.length;
      var spaceBetween = params.spaceBetween;
      var slidePosition = -offsetBefore;
      var prevSlideSize = 0;
      var index3 = 0;
      if (typeof swiperSize === "undefined") {
        return;
      }
      if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) {
        spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiperSize;
      }
      swiper2.virtualSize = -spaceBetween;
      if (rtl) {
        slides.css({ marginLeft: "", marginTop: "" });
      } else {
        slides.css({ marginRight: "", marginBottom: "" });
      }
      var slidesNumberEvenToRows;
      if (params.slidesPerColumn > 1) {
        if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper2.params.slidesPerColumn) {
          slidesNumberEvenToRows = slidesLength;
        } else {
          slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
        }
        if (params.slidesPerView !== "auto" && params.slidesPerColumnFill === "row") {
          slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
        }
      }
      var slideSize;
      var slidesPerColumn = params.slidesPerColumn;
      var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
      var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
      for (var i = 0; i < slidesLength; i += 1) {
        slideSize = 0;
        var slide3 = slides.eq(i);
        if (params.slidesPerColumn > 1) {
          var newSlideOrderIndex = void 0;
          var column = void 0;
          var row = void 0;
          if (params.slidesPerColumnFill === "column" || params.slidesPerColumnFill === "row" && params.slidesPerGroup > 1) {
            if (params.slidesPerColumnFill === "column") {
              column = Math.floor(i / slidesPerColumn);
              row = i - column * slidesPerColumn;
              if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {
                row += 1;
                if (row >= slidesPerColumn) {
                  row = 0;
                  column += 1;
                }
              }
            } else {
              var groupIndex = Math.floor(i / params.slidesPerGroup);
              row = Math.floor(i / params.slidesPerView) - groupIndex * params.slidesPerColumn;
              column = i - row * params.slidesPerView - groupIndex * params.slidesPerView;
            }
            newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;
            slide3.css({
              "-webkit-box-ordinal-group": newSlideOrderIndex,
              "-moz-box-ordinal-group": newSlideOrderIndex,
              "-ms-flex-order": newSlideOrderIndex,
              "-webkit-order": newSlideOrderIndex,
              order: newSlideOrderIndex
            });
          } else {
            row = Math.floor(i / slidesPerRow);
            column = i - row * slidesPerRow;
          }
          slide3.css(
            "margin-" + (swiper2.isHorizontal() ? "top" : "left"),
            row !== 0 && params.spaceBetween && params.spaceBetween + "px"
          ).attr("data-swiper-column", column).attr("data-swiper-row", row);
        }
        if (slide3.css("display") === "none") {
          continue;
        }
        if (params.slidesPerView === "auto") {
          var slideStyles = win2.getComputedStyle(slide3[0], null);
          var currentTransform = slide3[0].style.transform;
          var currentWebKitTransform = slide3[0].style.webkitTransform;
          if (currentTransform) {
            slide3[0].style.transform = "none";
          }
          if (currentWebKitTransform) {
            slide3[0].style.webkitTransform = "none";
          }
          if (params.roundLengths) {
            slideSize = swiper2.isHorizontal() ? slide3.outerWidth(true) : slide3.outerHeight(true);
          } else {
            if (swiper2.isHorizontal()) {
              var width = parseFloat(slideStyles.getPropertyValue("width"));
              var paddingLeft = parseFloat(slideStyles.getPropertyValue("padding-left"));
              var paddingRight = parseFloat(slideStyles.getPropertyValue("padding-right"));
              var marginLeft = parseFloat(slideStyles.getPropertyValue("margin-left"));
              var marginRight = parseFloat(slideStyles.getPropertyValue("margin-right"));
              var boxSizing = slideStyles.getPropertyValue("box-sizing");
              if (boxSizing && boxSizing === "border-box" && !Browser3.isIE) {
                slideSize = width + marginLeft + marginRight;
              } else {
                slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
              }
            } else {
              var height = parseFloat(slideStyles.getPropertyValue("height"));
              var paddingTop = parseFloat(slideStyles.getPropertyValue("padding-top"));
              var paddingBottom = parseFloat(slideStyles.getPropertyValue("padding-bottom"));
              var marginTop = parseFloat(slideStyles.getPropertyValue("margin-top"));
              var marginBottom = parseFloat(slideStyles.getPropertyValue("margin-bottom"));
              var boxSizing$1 = slideStyles.getPropertyValue("box-sizing");
              if (boxSizing$1 && boxSizing$1 === "border-box" && !Browser3.isIE) {
                slideSize = height + marginTop + marginBottom;
              } else {
                slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
              }
            }
          }
          if (currentTransform) {
            slide3[0].style.transform = currentTransform;
          }
          if (currentWebKitTransform) {
            slide3[0].style.webkitTransform = currentWebKitTransform;
          }
          if (params.roundLengths) {
            slideSize = Math.floor(slideSize);
          }
        } else {
          slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
          if (params.roundLengths) {
            slideSize = Math.floor(slideSize);
          }
          if (slides[i]) {
            if (swiper2.isHorizontal()) {
              slides[i].style.width = slideSize + "px";
            } else {
              slides[i].style.height = slideSize + "px";
            }
          }
        }
        if (slides[i]) {
          slides[i].swiperSlideSize = slideSize;
        }
        slidesSizesGrid.push(slideSize);
        if (params.centeredSlides) {
          slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
          if (prevSlideSize === 0 && i !== 0) {
            slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
          }
          if (i === 0) {
            slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
          }
          if (Math.abs(slidePosition) < 1 / 1e3) {
            slidePosition = 0;
          }
          if (params.roundLengths) {
            slidePosition = Math.floor(slidePosition);
          }
          if (index3 % params.slidesPerGroup === 0) {
            snapGrid.push(slidePosition);
          }
          slidesGrid.push(slidePosition);
        } else {
          if (params.roundLengths) {
            slidePosition = Math.floor(slidePosition);
          }
          if (index3 % params.slidesPerGroup === 0) {
            snapGrid.push(slidePosition);
          }
          slidesGrid.push(slidePosition);
          slidePosition = slidePosition + slideSize + spaceBetween;
        }
        swiper2.virtualSize += slideSize + spaceBetween;
        prevSlideSize = slideSize;
        index3 += 1;
      }
      swiper2.virtualSize = Math.max(swiper2.virtualSize, swiperSize) + offsetAfter;
      var newSlidesGrid;
      if (rtl && wrongRTL && (params.effect === "slide" || params.effect === "coverflow")) {
        $wrapperEl.css({ width: swiper2.virtualSize + params.spaceBetween + "px" });
      }
      if (!Support3.flexbox || params.setWrapperSize) {
        if (swiper2.isHorizontal()) {
          $wrapperEl.css({ width: swiper2.virtualSize + params.spaceBetween + "px" });
        } else {
          $wrapperEl.css({ height: swiper2.virtualSize + params.spaceBetween + "px" });
        }
      }
      if (params.slidesPerColumn > 1) {
        swiper2.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
        swiper2.virtualSize = Math.ceil(swiper2.virtualSize / params.slidesPerColumn) - params.spaceBetween;
        if (swiper2.isHorizontal()) {
          $wrapperEl.css({ width: swiper2.virtualSize + params.spaceBetween + "px" });
        } else {
          $wrapperEl.css({ height: swiper2.virtualSize + params.spaceBetween + "px" });
        }
        if (params.centeredSlides) {
          newSlidesGrid = [];
          for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {
            var slidesGridItem = snapGrid[i$1];
            if (params.roundLengths) {
              slidesGridItem = Math.floor(slidesGridItem);
            }
            if (snapGrid[i$1] < swiper2.virtualSize + snapGrid[0]) {
              newSlidesGrid.push(slidesGridItem);
            }
          }
          snapGrid = newSlidesGrid;
        }
      }
      if (!params.centeredSlides) {
        newSlidesGrid = [];
        for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {
          var slidesGridItem$1 = snapGrid[i$2];
          if (params.roundLengths) {
            slidesGridItem$1 = Math.floor(slidesGridItem$1);
          }
          if (snapGrid[i$2] <= swiper2.virtualSize - swiperSize) {
            newSlidesGrid.push(slidesGridItem$1);
          }
        }
        snapGrid = newSlidesGrid;
        if (Math.floor(swiper2.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
          snapGrid.push(swiper2.virtualSize - swiperSize);
        }
      }
      if (snapGrid.length === 0) {
        snapGrid = [0];
      }
      if (params.spaceBetween !== 0) {
        if (swiper2.isHorizontal()) {
          if (rtl) {
            slides.css({ marginLeft: spaceBetween + "px" });
          } else {
            slides.css({ marginRight: spaceBetween + "px" });
          }
        } else {
          slides.css({ marginBottom: spaceBetween + "px" });
        }
      }
      if (params.centerInsufficientSlides) {
        var allSlidesSize = 0;
        slidesSizesGrid.forEach(function(slideSizeValue) {
          allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
        });
        allSlidesSize -= params.spaceBetween;
        if (allSlidesSize < swiperSize) {
          var allSlidesOffset = (swiperSize - allSlidesSize) / 2;
          snapGrid.forEach(function(snap, snapIndex) {
            snapGrid[snapIndex] = snap - allSlidesOffset;
          });
          slidesGrid.forEach(function(snap, snapIndex) {
            slidesGrid[snapIndex] = snap + allSlidesOffset;
          });
        }
      }
      Utils2.extend(swiper2, {
        slides,
        snapGrid,
        slidesGrid,
        slidesSizesGrid
      });
      if (slidesLength !== previousSlidesLength) {
        swiper2.emit("slidesLengthChange");
      }
      if (snapGrid.length !== previousSnapGridLength) {
        if (swiper2.params.watchOverflow) {
          swiper2.checkOverflow();
        }
        swiper2.emit("snapGridLengthChange");
      }
      if (slidesGrid.length !== previousSlidesGridLength) {
        swiper2.emit("slidesGridLengthChange");
      }
      if (params.watchSlidesProgress || params.watchSlidesVisibility) {
        swiper2.updateSlidesOffset();
      }
    }
    function updateAutoHeight2(speed) {
      var swiper2 = this;
      var activeSlides = [];
      var newHeight = 0;
      var i;
      if (typeof speed === "number") {
        swiper2.setTransition(speed);
      } else if (speed === true) {
        swiper2.setTransition(swiper2.params.speed);
      }
      if (swiper2.params.slidesPerView !== "auto" && swiper2.params.slidesPerView > 1) {
        for (i = 0; i < Math.ceil(swiper2.params.slidesPerView); i += 1) {
          var index3 = swiper2.activeIndex + i;
          if (index3 > swiper2.slides.length) {
            break;
          }
          activeSlides.push(swiper2.slides.eq(index3)[0]);
        }
      } else {
        activeSlides.push(swiper2.slides.eq(swiper2.activeIndex)[0]);
      }
      for (i = 0; i < activeSlides.length; i += 1) {
        if (typeof activeSlides[i] !== "undefined") {
          var height = activeSlides[i].offsetHeight;
          newHeight = height > newHeight ? height : newHeight;
        }
      }
      if (newHeight) {
        swiper2.$wrapperEl.css("height", newHeight + "px");
      }
    }
    function updateSlidesOffset2() {
      var swiper2 = this;
      var slides = swiper2.slides;
      for (var i = 0; i < slides.length; i += 1) {
        slides[i].swiperSlideOffset = swiper2.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
      }
    }
    function updateSlidesProgress2(translate3) {
      if (translate3 === void 0)
        translate3 = this && this.translate || 0;
      var swiper2 = this;
      var params = swiper2.params;
      var slides = swiper2.slides;
      var rtl = swiper2.rtlTranslate;
      if (slides.length === 0) {
        return;
      }
      if (typeof slides[0].swiperSlideOffset === "undefined") {
        swiper2.updateSlidesOffset();
      }
      var offsetCenter = -translate3;
      if (rtl) {
        offsetCenter = translate3;
      }
      slides.removeClass(params.slideVisibleClass);
      swiper2.visibleSlidesIndexes = [];
      swiper2.visibleSlides = [];
      for (var i = 0; i < slides.length; i += 1) {
        var slide3 = slides[i];
        var slideProgress = (offsetCenter + (params.centeredSlides ? swiper2.minTranslate() : 0) - slide3.swiperSlideOffset) / (slide3.swiperSlideSize + params.spaceBetween);
        if (params.watchSlidesVisibility) {
          var slideBefore = -(offsetCenter - slide3.swiperSlideOffset);
          var slideAfter = slideBefore + swiper2.slidesSizesGrid[i];
          var isVisible = slideBefore >= 0 && slideBefore < swiper2.size - 1 || slideAfter > 1 && slideAfter <= swiper2.size || slideBefore <= 0 && slideAfter >= swiper2.size;
          if (isVisible) {
            swiper2.visibleSlides.push(slide3);
            swiper2.visibleSlidesIndexes.push(i);
            slides.eq(i).addClass(params.slideVisibleClass);
          }
        }
        slide3.progress = rtl ? -slideProgress : slideProgress;
      }
      swiper2.visibleSlides = $2(swiper2.visibleSlides);
    }
    function updateProgress2(translate3) {
      if (translate3 === void 0)
        translate3 = this && this.translate || 0;
      var swiper2 = this;
      var params = swiper2.params;
      var translatesDiff = swiper2.maxTranslate() - swiper2.minTranslate();
      var progress = swiper2.progress;
      var isBeginning = swiper2.isBeginning;
      var isEnd = swiper2.isEnd;
      var wasBeginning = isBeginning;
      var wasEnd = isEnd;
      if (translatesDiff === 0) {
        progress = 0;
        isBeginning = true;
        isEnd = true;
      } else {
        progress = (translate3 - swiper2.minTranslate()) / translatesDiff;
        isBeginning = progress <= 0;
        isEnd = progress >= 1;
      }
      Utils2.extend(swiper2, {
        progress,
        isBeginning,
        isEnd
      });
      if (params.watchSlidesProgress || params.watchSlidesVisibility) {
        swiper2.updateSlidesProgress(translate3);
      }
      if (isBeginning && !wasBeginning) {
        swiper2.emit("reachBeginning toEdge");
      }
      if (isEnd && !wasEnd) {
        swiper2.emit("reachEnd toEdge");
      }
      if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
        swiper2.emit("fromEdge");
      }
      swiper2.emit("progress", progress);
    }
    function updateSlidesClasses2() {
      var swiper2 = this;
      var slides = swiper2.slides;
      var params = swiper2.params;
      var $wrapperEl = swiper2.$wrapperEl;
      var activeIndex = swiper2.activeIndex;
      var realIndex = swiper2.realIndex;
      var isVirtual = swiper2.virtual && params.virtual.enabled;
      slides.removeClass(params.slideActiveClass + " " + params.slideNextClass + " " + params.slidePrevClass + " " + params.slideDuplicateActiveClass + " " + params.slideDuplicateNextClass + " " + params.slideDuplicatePrevClass);
      var activeSlide;
      if (isVirtual) {
        activeSlide = swiper2.$wrapperEl.find("." + params.slideClass + '[data-swiper-slide-index="' + activeIndex + '"]');
      } else {
        activeSlide = slides.eq(activeIndex);
      }
      activeSlide.addClass(params.slideActiveClass);
      if (params.loop) {
        if (activeSlide.hasClass(params.slideDuplicateClass)) {
          $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ')[data-swiper-slide-index="' + realIndex + '"]').addClass(params.slideDuplicateActiveClass);
        } else {
          $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + '[data-swiper-slide-index="' + realIndex + '"]').addClass(params.slideDuplicateActiveClass);
        }
      }
      var nextSlide = activeSlide.nextAll("." + params.slideClass).eq(0).addClass(params.slideNextClass);
      if (params.loop && nextSlide.length === 0) {
        nextSlide = slides.eq(0);
        nextSlide.addClass(params.slideNextClass);
      }
      var prevSlide = activeSlide.prevAll("." + params.slideClass).eq(0).addClass(params.slidePrevClass);
      if (params.loop && prevSlide.length === 0) {
        prevSlide = slides.eq(-1);
        prevSlide.addClass(params.slidePrevClass);
      }
      if (params.loop) {
        if (nextSlide.hasClass(params.slideDuplicateClass)) {
          $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ')[data-swiper-slide-index="' + nextSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicateNextClass);
        } else {
          $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + '[data-swiper-slide-index="' + nextSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicateNextClass);
        }
        if (prevSlide.hasClass(params.slideDuplicateClass)) {
          $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ')[data-swiper-slide-index="' + prevSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicatePrevClass);
        } else {
          $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + '[data-swiper-slide-index="' + prevSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicatePrevClass);
        }
      }
    }
    function updateActiveIndex2(newActiveIndex) {
      var swiper2 = this;
      var translate3 = swiper2.rtlTranslate ? swiper2.translate : -swiper2.translate;
      var slidesGrid = swiper2.slidesGrid;
      var snapGrid = swiper2.snapGrid;
      var params = swiper2.params;
      var previousIndex = swiper2.activeIndex;
      var previousRealIndex = swiper2.realIndex;
      var previousSnapIndex = swiper2.snapIndex;
      var activeIndex = newActiveIndex;
      var snapIndex;
      if (typeof activeIndex === "undefined") {
        for (var i = 0; i < slidesGrid.length; i += 1) {
          if (typeof slidesGrid[i + 1] !== "undefined") {
            if (translate3 >= slidesGrid[i] && translate3 < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
              activeIndex = i;
            } else if (translate3 >= slidesGrid[i] && translate3 < slidesGrid[i + 1]) {
              activeIndex = i + 1;
            }
          } else if (translate3 >= slidesGrid[i]) {
            activeIndex = i;
          }
        }
        if (params.normalizeSlideIndex) {
          if (activeIndex < 0 || typeof activeIndex === "undefined") {
            activeIndex = 0;
          }
        }
      }
      if (snapGrid.indexOf(translate3) >= 0) {
        snapIndex = snapGrid.indexOf(translate3);
      } else {
        snapIndex = Math.floor(activeIndex / params.slidesPerGroup);
      }
      if (snapIndex >= snapGrid.length) {
        snapIndex = snapGrid.length - 1;
      }
      if (activeIndex === previousIndex) {
        if (snapIndex !== previousSnapIndex) {
          swiper2.snapIndex = snapIndex;
          swiper2.emit("snapIndexChange");
        }
        return;
      }
      var realIndex = parseInt(swiper2.slides.eq(activeIndex).attr("data-swiper-slide-index") || activeIndex, 10);
      Utils2.extend(swiper2, {
        snapIndex,
        realIndex,
        previousIndex,
        activeIndex
      });
      swiper2.emit("activeIndexChange");
      swiper2.emit("snapIndexChange");
      if (previousRealIndex !== realIndex) {
        swiper2.emit("realIndexChange");
      }
      if (swiper2.initialized || swiper2.runCallbacksOnInit) {
        swiper2.emit("slideChange");
      }
    }
    function updateClickedSlide2(e) {
      var swiper2 = this;
      var params = swiper2.params;
      var slide3 = $2(e.target).closest("." + params.slideClass)[0];
      var slideFound = false;
      if (slide3) {
        for (var i = 0; i < swiper2.slides.length; i += 1) {
          if (swiper2.slides[i] === slide3) {
            slideFound = true;
          }
        }
      }
      if (slide3 && slideFound) {
        swiper2.clickedSlide = slide3;
        if (swiper2.virtual && swiper2.params.virtual.enabled) {
          swiper2.clickedIndex = parseInt($2(slide3).attr("data-swiper-slide-index"), 10);
        } else {
          swiper2.clickedIndex = $2(slide3).index();
        }
      } else {
        swiper2.clickedSlide = void 0;
        swiper2.clickedIndex = void 0;
        return;
      }
      if (params.slideToClickedSlide && swiper2.clickedIndex !== void 0 && swiper2.clickedIndex !== swiper2.activeIndex) {
        swiper2.slideToClickedSlide();
      }
    }
    var update2 = {
      updateSize: updateSize2,
      updateSlides: updateSlides2,
      updateAutoHeight: updateAutoHeight2,
      updateSlidesOffset: updateSlidesOffset2,
      updateSlidesProgress: updateSlidesProgress2,
      updateProgress: updateProgress2,
      updateSlidesClasses: updateSlidesClasses2,
      updateActiveIndex: updateActiveIndex2,
      updateClickedSlide: updateClickedSlide2
    };
    function getTranslate2(axis) {
      if (axis === void 0)
        axis = this.isHorizontal() ? "x" : "y";
      var swiper2 = this;
      var params = swiper2.params;
      var rtl = swiper2.rtlTranslate;
      var translate3 = swiper2.translate;
      var $wrapperEl = swiper2.$wrapperEl;
      if (params.virtualTranslate) {
        return rtl ? -translate3 : translate3;
      }
      var currentTranslate = Utils2.getTranslate($wrapperEl[0], axis);
      if (rtl) {
        currentTranslate = -currentTranslate;
      }
      return currentTranslate || 0;
    }
    function setTranslate2(translate3, byController) {
      var swiper2 = this;
      var rtl = swiper2.rtlTranslate;
      var params = swiper2.params;
      var $wrapperEl = swiper2.$wrapperEl;
      var progress = swiper2.progress;
      var x = 0;
      var y = 0;
      var z = 0;
      if (swiper2.isHorizontal()) {
        x = rtl ? -translate3 : translate3;
      } else {
        y = translate3;
      }
      if (params.roundLengths) {
        x = Math.floor(x);
        y = Math.floor(y);
      }
      if (!params.virtualTranslate) {
        if (Support3.transforms3d) {
          $wrapperEl.transform("translate3d(" + x + "px, " + y + "px, " + z + "px)");
        } else {
          $wrapperEl.transform("translate(" + x + "px, " + y + "px)");
        }
      }
      swiper2.previousTranslate = swiper2.translate;
      swiper2.translate = swiper2.isHorizontal() ? x : y;
      var newProgress;
      var translatesDiff = swiper2.maxTranslate() - swiper2.minTranslate();
      if (translatesDiff === 0) {
        newProgress = 0;
      } else {
        newProgress = (translate3 - swiper2.minTranslate()) / translatesDiff;
      }
      if (newProgress !== progress) {
        swiper2.updateProgress(translate3);
      }
      swiper2.emit("setTranslate", swiper2.translate, byController);
    }
    function minTranslate2() {
      return -this.snapGrid[0];
    }
    function maxTranslate2() {
      return -this.snapGrid[this.snapGrid.length - 1];
    }
    var translate2 = {
      getTranslate: getTranslate2,
      setTranslate: setTranslate2,
      minTranslate: minTranslate2,
      maxTranslate: maxTranslate2
    };
    function setTransition2(duration, byController) {
      var swiper2 = this;
      swiper2.$wrapperEl.transition(duration);
      swiper2.emit("setTransition", duration, byController);
    }
    function transitionStart2(runCallbacks, direction) {
      if (runCallbacks === void 0)
        runCallbacks = true;
      var swiper2 = this;
      var activeIndex = swiper2.activeIndex;
      var params = swiper2.params;
      var previousIndex = swiper2.previousIndex;
      if (params.autoHeight) {
        swiper2.updateAutoHeight();
      }
      var dir = direction;
      if (!dir) {
        if (activeIndex > previousIndex) {
          dir = "next";
        } else if (activeIndex < previousIndex) {
          dir = "prev";
        } else {
          dir = "reset";
        }
      }
      swiper2.emit("transitionStart");
      if (runCallbacks && activeIndex !== previousIndex) {
        if (dir === "reset") {
          swiper2.emit("slideResetTransitionStart");
          return;
        }
        swiper2.emit("slideChangeTransitionStart");
        if (dir === "next") {
          swiper2.emit("slideNextTransitionStart");
        } else {
          swiper2.emit("slidePrevTransitionStart");
        }
      }
    }
    function transitionEnd$12(runCallbacks, direction) {
      if (runCallbacks === void 0)
        runCallbacks = true;
      var swiper2 = this;
      var activeIndex = swiper2.activeIndex;
      var previousIndex = swiper2.previousIndex;
      swiper2.animating = false;
      swiper2.setTransition(0);
      var dir = direction;
      if (!dir) {
        if (activeIndex > previousIndex) {
          dir = "next";
        } else if (activeIndex < previousIndex) {
          dir = "prev";
        } else {
          dir = "reset";
        }
      }
      swiper2.emit("transitionEnd");
      if (runCallbacks && activeIndex !== previousIndex) {
        if (dir === "reset") {
          swiper2.emit("slideResetTransitionEnd");
          return;
        }
        swiper2.emit("slideChangeTransitionEnd");
        if (dir === "next") {
          swiper2.emit("slideNextTransitionEnd");
        } else {
          swiper2.emit("slidePrevTransitionEnd");
        }
      }
    }
    var transition$12 = {
      setTransition: setTransition2,
      transitionStart: transitionStart2,
      transitionEnd: transitionEnd$12
    };
    function slideTo2(index3, speed, runCallbacks, internal) {
      if (index3 === void 0)
        index3 = 0;
      if (speed === void 0)
        speed = this.params.speed;
      if (runCallbacks === void 0)
        runCallbacks = true;
      var swiper2 = this;
      var slideIndex = index3;
      if (slideIndex < 0) {
        slideIndex = 0;
      }
      var params = swiper2.params;
      var snapGrid = swiper2.snapGrid;
      var slidesGrid = swiper2.slidesGrid;
      var previousIndex = swiper2.previousIndex;
      var activeIndex = swiper2.activeIndex;
      var rtl = swiper2.rtlTranslate;
      if (swiper2.animating && params.preventInteractionOnTransition) {
        return false;
      }
      var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);
      if (snapIndex >= snapGrid.length) {
        snapIndex = snapGrid.length - 1;
      }
      if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
        swiper2.emit("beforeSlideChangeStart");
      }
      var translate3 = -snapGrid[snapIndex];
      swiper2.updateProgress(translate3);
      if (params.normalizeSlideIndex) {
        for (var i = 0; i < slidesGrid.length; i += 1) {
          if (-Math.floor(translate3 * 100) >= Math.floor(slidesGrid[i] * 100)) {
            slideIndex = i;
          }
        }
      }
      if (swiper2.initialized && slideIndex !== activeIndex) {
        if (!swiper2.allowSlideNext && translate3 < swiper2.translate && translate3 < swiper2.minTranslate()) {
          return false;
        }
        if (!swiper2.allowSlidePrev && translate3 > swiper2.translate && translate3 > swiper2.maxTranslate()) {
          if ((activeIndex || 0) !== slideIndex) {
            return false;
          }
        }
      }
      var direction;
      if (slideIndex > activeIndex) {
        direction = "next";
      } else if (slideIndex < activeIndex) {
        direction = "prev";
      } else {
        direction = "reset";
      }
      if (rtl && -translate3 === swiper2.translate || !rtl && translate3 === swiper2.translate) {
        swiper2.updateActiveIndex(slideIndex);
        if (params.autoHeight) {
          swiper2.updateAutoHeight();
        }
        swiper2.updateSlidesClasses();
        if (params.effect !== "slide") {
          swiper2.setTranslate(translate3);
        }
        if (direction !== "reset") {
          swiper2.transitionStart(runCallbacks, direction);
          swiper2.transitionEnd(runCallbacks, direction);
        }
        return false;
      }
      if (speed === 0 || !Support3.transition) {
        swiper2.setTransition(0);
        swiper2.setTranslate(translate3);
        swiper2.updateActiveIndex(slideIndex);
        swiper2.updateSlidesClasses();
        swiper2.emit("beforeTransitionStart", speed, internal);
        swiper2.transitionStart(runCallbacks, direction);
        swiper2.transitionEnd(runCallbacks, direction);
      } else {
        swiper2.setTransition(speed);
        swiper2.setTranslate(translate3);
        swiper2.updateActiveIndex(slideIndex);
        swiper2.updateSlidesClasses();
        swiper2.emit("beforeTransitionStart", speed, internal);
        swiper2.transitionStart(runCallbacks, direction);
        if (!swiper2.animating) {
          swiper2.animating = true;
          if (!swiper2.onSlideToWrapperTransitionEnd) {
            swiper2.onSlideToWrapperTransitionEnd = function transitionEnd3(e) {
              if (!swiper2 || swiper2.destroyed) {
                return;
              }
              if (e.target !== this) {
                return;
              }
              swiper2.$wrapperEl[0].removeEventListener("transitionend", swiper2.onSlideToWrapperTransitionEnd);
              swiper2.$wrapperEl[0].removeEventListener("webkitTransitionEnd", swiper2.onSlideToWrapperTransitionEnd);
              swiper2.onSlideToWrapperTransitionEnd = null;
              delete swiper2.onSlideToWrapperTransitionEnd;
              swiper2.transitionEnd(runCallbacks, direction);
            };
          }
          swiper2.$wrapperEl[0].addEventListener("transitionend", swiper2.onSlideToWrapperTransitionEnd);
          swiper2.$wrapperEl[0].addEventListener("webkitTransitionEnd", swiper2.onSlideToWrapperTransitionEnd);
        }
      }
      return true;
    }
    function slideToLoop2(index3, speed, runCallbacks, internal) {
      if (index3 === void 0)
        index3 = 0;
      if (speed === void 0)
        speed = this.params.speed;
      if (runCallbacks === void 0)
        runCallbacks = true;
      var swiper2 = this;
      var newIndex = index3;
      if (swiper2.params.loop) {
        newIndex += swiper2.loopedSlides;
      }
      return swiper2.slideTo(newIndex, speed, runCallbacks, internal);
    }
    function slideNext2(speed, runCallbacks, internal) {
      if (speed === void 0)
        speed = this.params.speed;
      if (runCallbacks === void 0)
        runCallbacks = true;
      var swiper2 = this;
      var params = swiper2.params;
      var animating = swiper2.animating;
      if (params.loop) {
        if (animating) {
          return false;
        }
        swiper2.loopFix();
        swiper2._clientLeft = swiper2.$wrapperEl[0].clientLeft;
        return swiper2.slideTo(swiper2.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
      }
      return swiper2.slideTo(swiper2.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
    }
    function slidePrev2(speed, runCallbacks, internal) {
      if (speed === void 0)
        speed = this.params.speed;
      if (runCallbacks === void 0)
        runCallbacks = true;
      var swiper2 = this;
      var params = swiper2.params;
      var animating = swiper2.animating;
      var snapGrid = swiper2.snapGrid;
      var slidesGrid = swiper2.slidesGrid;
      var rtlTranslate = swiper2.rtlTranslate;
      if (params.loop) {
        if (animating) {
          return false;
        }
        swiper2.loopFix();
        swiper2._clientLeft = swiper2.$wrapperEl[0].clientLeft;
      }
      var translate3 = rtlTranslate ? swiper2.translate : -swiper2.translate;
      function normalize(val) {
        if (val < 0) {
          return -Math.floor(Math.abs(val));
        }
        return Math.floor(val);
      }
      var normalizedTranslate = normalize(translate3);
      var normalizedSnapGrid = snapGrid.map(function(val) {
        return normalize(val);
      });
      slidesGrid.map(function(val) {
        return normalize(val);
      });
      snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
      var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
      var prevIndex;
      if (typeof prevSnap !== "undefined") {
        prevIndex = slidesGrid.indexOf(prevSnap);
        if (prevIndex < 0) {
          prevIndex = swiper2.activeIndex - 1;
        }
      }
      return swiper2.slideTo(prevIndex, speed, runCallbacks, internal);
    }
    function slideReset2(speed, runCallbacks, internal) {
      if (speed === void 0)
        speed = this.params.speed;
      if (runCallbacks === void 0)
        runCallbacks = true;
      var swiper2 = this;
      return swiper2.slideTo(swiper2.activeIndex, speed, runCallbacks, internal);
    }
    function slideToClosest2(speed, runCallbacks, internal) {
      if (speed === void 0)
        speed = this.params.speed;
      if (runCallbacks === void 0)
        runCallbacks = true;
      var swiper2 = this;
      var index3 = swiper2.activeIndex;
      var snapIndex = Math.floor(index3 / swiper2.params.slidesPerGroup);
      if (snapIndex < swiper2.snapGrid.length - 1) {
        var translate3 = swiper2.rtlTranslate ? swiper2.translate : -swiper2.translate;
        var currentSnap = swiper2.snapGrid[snapIndex];
        var nextSnap = swiper2.snapGrid[snapIndex + 1];
        if (translate3 - currentSnap > (nextSnap - currentSnap) / 2) {
          index3 = swiper2.params.slidesPerGroup;
        }
      }
      return swiper2.slideTo(index3, speed, runCallbacks, internal);
    }
    function slideToClickedSlide2() {
      var swiper2 = this;
      var params = swiper2.params;
      var $wrapperEl = swiper2.$wrapperEl;
      var slidesPerView = params.slidesPerView === "auto" ? swiper2.slidesPerViewDynamic() : params.slidesPerView;
      var slideToIndex = swiper2.clickedIndex;
      var realIndex;
      if (params.loop) {
        if (swiper2.animating) {
          return;
        }
        realIndex = parseInt($2(swiper2.clickedSlide).attr("data-swiper-slide-index"), 10);
        if (params.centeredSlides) {
          if (slideToIndex < swiper2.loopedSlides - slidesPerView / 2 || slideToIndex > swiper2.slides.length - swiper2.loopedSlides + slidesPerView / 2) {
            swiper2.loopFix();
            slideToIndex = $wrapperEl.children("." + params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.' + params.slideDuplicateClass + ")").eq(0).index();
            Utils2.nextTick(function() {
              swiper2.slideTo(slideToIndex);
            });
          } else {
            swiper2.slideTo(slideToIndex);
          }
        } else if (slideToIndex > swiper2.slides.length - slidesPerView) {
          swiper2.loopFix();
          slideToIndex = $wrapperEl.children("." + params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.' + params.slideDuplicateClass + ")").eq(0).index();
          Utils2.nextTick(function() {
            swiper2.slideTo(slideToIndex);
          });
        } else {
          swiper2.slideTo(slideToIndex);
        }
      } else {
        swiper2.slideTo(slideToIndex);
      }
    }
    var slide2 = {
      slideTo: slideTo2,
      slideToLoop: slideToLoop2,
      slideNext: slideNext2,
      slidePrev: slidePrev2,
      slideReset: slideReset2,
      slideToClosest: slideToClosest2,
      slideToClickedSlide: slideToClickedSlide2
    };
    function loopCreate2() {
      var swiper2 = this;
      var params = swiper2.params;
      var $wrapperEl = swiper2.$wrapperEl;
      $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass).remove();
      var slides = $wrapperEl.children("." + params.slideClass);
      if (params.loopFillGroupWithBlank) {
        var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
        if (blankSlidesNum !== params.slidesPerGroup) {
          for (var i = 0; i < blankSlidesNum; i += 1) {
            var blankNode = $2(doc2.createElement("div")).addClass(params.slideClass + " " + params.slideBlankClass);
            $wrapperEl.append(blankNode);
          }
          slides = $wrapperEl.children("." + params.slideClass);
        }
      }
      if (params.slidesPerView === "auto" && !params.loopedSlides) {
        params.loopedSlides = slides.length;
      }
      swiper2.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);
      swiper2.loopedSlides += params.loopAdditionalSlides;
      if (swiper2.loopedSlides > slides.length) {
        swiper2.loopedSlides = slides.length;
      }
      var prependSlides = [];
      var appendSlides = [];
      slides.each(function(index3, el) {
        var slide3 = $2(el);
        if (index3 < swiper2.loopedSlides) {
          appendSlides.push(el);
        }
        if (index3 < slides.length && index3 >= slides.length - swiper2.loopedSlides) {
          prependSlides.push(el);
        }
        slide3.attr("data-swiper-slide-index", index3);
      });
      for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {
        $wrapperEl.append($2(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));
      }
      for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {
        $wrapperEl.prepend($2(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));
      }
    }
    function loopFix2() {
      var swiper2 = this;
      var params = swiper2.params;
      var activeIndex = swiper2.activeIndex;
      var slides = swiper2.slides;
      var loopedSlides = swiper2.loopedSlides;
      var allowSlidePrev = swiper2.allowSlidePrev;
      var allowSlideNext = swiper2.allowSlideNext;
      var snapGrid = swiper2.snapGrid;
      var rtl = swiper2.rtlTranslate;
      var newIndex;
      swiper2.allowSlidePrev = true;
      swiper2.allowSlideNext = true;
      var snapTranslate = -snapGrid[activeIndex];
      var diff = snapTranslate - swiper2.getTranslate();
      if (activeIndex < loopedSlides) {
        newIndex = slides.length - loopedSlides * 3 + activeIndex;
        newIndex += loopedSlides;
        var slideChanged = swiper2.slideTo(newIndex, 0, false, true);
        if (slideChanged && diff !== 0) {
          swiper2.setTranslate((rtl ? -swiper2.translate : swiper2.translate) - diff);
        }
      } else if (params.slidesPerView === "auto" && activeIndex >= loopedSlides * 2 || activeIndex >= slides.length - loopedSlides) {
        newIndex = -slides.length + activeIndex + loopedSlides;
        newIndex += loopedSlides;
        var slideChanged$1 = swiper2.slideTo(newIndex, 0, false, true);
        if (slideChanged$1 && diff !== 0) {
          swiper2.setTranslate((rtl ? -swiper2.translate : swiper2.translate) - diff);
        }
      }
      swiper2.allowSlidePrev = allowSlidePrev;
      swiper2.allowSlideNext = allowSlideNext;
    }
    function loopDestroy2() {
      var swiper2 = this;
      var $wrapperEl = swiper2.$wrapperEl;
      var params = swiper2.params;
      var slides = swiper2.slides;
      $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + ",." + params.slideClass + "." + params.slideBlankClass).remove();
      slides.removeAttr("data-swiper-slide-index");
    }
    var loop2 = {
      loopCreate: loopCreate2,
      loopFix: loopFix2,
      loopDestroy: loopDestroy2
    };
    function setGrabCursor2(moving) {
      var swiper2 = this;
      if (Support3.touch || !swiper2.params.simulateTouch || swiper2.params.watchOverflow && swiper2.isLocked) {
        return;
      }
      var el = swiper2.el;
      el.style.cursor = "move";
      el.style.cursor = moving ? "-webkit-grabbing" : "-webkit-grab";
      el.style.cursor = moving ? "-moz-grabbin" : "-moz-grab";
      el.style.cursor = moving ? "grabbing" : "grab";
    }
    function unsetGrabCursor2() {
      var swiper2 = this;
      if (Support3.touch || swiper2.params.watchOverflow && swiper2.isLocked) {
        return;
      }
      swiper2.el.style.cursor = "";
    }
    var grabCursor2 = {
      setGrabCursor: setGrabCursor2,
      unsetGrabCursor: unsetGrabCursor2
    };
    function appendSlide2(slides) {
      var swiper2 = this;
      var $wrapperEl = swiper2.$wrapperEl;
      var params = swiper2.params;
      if (params.loop) {
        swiper2.loopDestroy();
      }
      if (typeof slides === "object" && "length" in slides) {
        for (var i = 0; i < slides.length; i += 1) {
          if (slides[i]) {
            $wrapperEl.append(slides[i]);
          }
        }
      } else {
        $wrapperEl.append(slides);
      }
      if (params.loop) {
        swiper2.loopCreate();
      }
      if (!(params.observer && Support3.observer)) {
        swiper2.update();
      }
    }
    function prependSlide2(slides) {
      var swiper2 = this;
      var params = swiper2.params;
      var $wrapperEl = swiper2.$wrapperEl;
      var activeIndex = swiper2.activeIndex;
      if (params.loop) {
        swiper2.loopDestroy();
      }
      var newActiveIndex = activeIndex + 1;
      if (typeof slides === "object" && "length" in slides) {
        for (var i = 0; i < slides.length; i += 1) {
          if (slides[i]) {
            $wrapperEl.prepend(slides[i]);
          }
        }
        newActiveIndex = activeIndex + slides.length;
      } else {
        $wrapperEl.prepend(slides);
      }
      if (params.loop) {
        swiper2.loopCreate();
      }
      if (!(params.observer && Support3.observer)) {
        swiper2.update();
      }
      swiper2.slideTo(newActiveIndex, 0, false);
    }
    function addSlide2(index3, slides) {
      var swiper2 = this;
      var $wrapperEl = swiper2.$wrapperEl;
      var params = swiper2.params;
      var activeIndex = swiper2.activeIndex;
      var activeIndexBuffer = activeIndex;
      if (params.loop) {
        activeIndexBuffer -= swiper2.loopedSlides;
        swiper2.loopDestroy();
        swiper2.slides = $wrapperEl.children("." + params.slideClass);
      }
      var baseLength = swiper2.slides.length;
      if (index3 <= 0) {
        swiper2.prependSlide(slides);
        return;
      }
      if (index3 >= baseLength) {
        swiper2.appendSlide(slides);
        return;
      }
      var newActiveIndex = activeIndexBuffer > index3 ? activeIndexBuffer + 1 : activeIndexBuffer;
      var slidesBuffer = [];
      for (var i = baseLength - 1; i >= index3; i -= 1) {
        var currentSlide = swiper2.slides.eq(i);
        currentSlide.remove();
        slidesBuffer.unshift(currentSlide);
      }
      if (typeof slides === "object" && "length" in slides) {
        for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
          if (slides[i$1]) {
            $wrapperEl.append(slides[i$1]);
          }
        }
        newActiveIndex = activeIndexBuffer > index3 ? activeIndexBuffer + slides.length : activeIndexBuffer;
      } else {
        $wrapperEl.append(slides);
      }
      for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {
        $wrapperEl.append(slidesBuffer[i$2]);
      }
      if (params.loop) {
        swiper2.loopCreate();
      }
      if (!(params.observer && Support3.observer)) {
        swiper2.update();
      }
      if (params.loop) {
        swiper2.slideTo(newActiveIndex + swiper2.loopedSlides, 0, false);
      } else {
        swiper2.slideTo(newActiveIndex, 0, false);
      }
    }
    function removeSlide2(slidesIndexes) {
      var swiper2 = this;
      var params = swiper2.params;
      var $wrapperEl = swiper2.$wrapperEl;
      var activeIndex = swiper2.activeIndex;
      var activeIndexBuffer = activeIndex;
      if (params.loop) {
        activeIndexBuffer -= swiper2.loopedSlides;
        swiper2.loopDestroy();
        swiper2.slides = $wrapperEl.children("." + params.slideClass);
      }
      var newActiveIndex = activeIndexBuffer;
      var indexToRemove;
      if (typeof slidesIndexes === "object" && "length" in slidesIndexes) {
        for (var i = 0; i < slidesIndexes.length; i += 1) {
          indexToRemove = slidesIndexes[i];
          if (swiper2.slides[indexToRemove]) {
            swiper2.slides.eq(indexToRemove).remove();
          }
          if (indexToRemove < newActiveIndex) {
            newActiveIndex -= 1;
          }
        }
        newActiveIndex = Math.max(newActiveIndex, 0);
      } else {
        indexToRemove = slidesIndexes;
        if (swiper2.slides[indexToRemove]) {
          swiper2.slides.eq(indexToRemove).remove();
        }
        if (indexToRemove < newActiveIndex) {
          newActiveIndex -= 1;
        }
        newActiveIndex = Math.max(newActiveIndex, 0);
      }
      if (params.loop) {
        swiper2.loopCreate();
      }
      if (!(params.observer && Support3.observer)) {
        swiper2.update();
      }
      if (params.loop) {
        swiper2.slideTo(newActiveIndex + swiper2.loopedSlides, 0, false);
      } else {
        swiper2.slideTo(newActiveIndex, 0, false);
      }
    }
    function removeAllSlides2() {
      var swiper2 = this;
      var slidesIndexes = [];
      for (var i = 0; i < swiper2.slides.length; i += 1) {
        slidesIndexes.push(i);
      }
      swiper2.removeSlide(slidesIndexes);
    }
    var manipulation2 = {
      appendSlide: appendSlide2,
      prependSlide: prependSlide2,
      addSlide: addSlide2,
      removeSlide: removeSlide2,
      removeAllSlides: removeAllSlides2
    };
    var Device3 = function Device4() {
      var ua = win2.navigator.userAgent;
      var device = {
        ios: false,
        android: false,
        androidChrome: false,
        desktop: false,
        windows: false,
        iphone: false,
        ipod: false,
        ipad: false,
        cordova: win2.cordova || win2.phonegap,
        phonegap: win2.cordova || win2.phonegap
      };
      var windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/);
      var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
      var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
      var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
      var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
      if (windows) {
        device.os = "windows";
        device.osVersion = windows[2];
        device.windows = true;
      }
      if (android && !windows) {
        device.os = "android";
        device.osVersion = android[2];
        device.android = true;
        device.androidChrome = ua.toLowerCase().indexOf("chrome") >= 0;
      }
      if (ipad || iphone || ipod) {
        device.os = "ios";
        device.ios = true;
      }
      if (iphone && !ipod) {
        device.osVersion = iphone[2].replace(/_/g, ".");
        device.iphone = true;
      }
      if (ipad) {
        device.osVersion = ipad[2].replace(/_/g, ".");
        device.ipad = true;
      }
      if (ipod) {
        device.osVersion = ipod[3] ? ipod[3].replace(/_/g, ".") : null;
        device.iphone = true;
      }
      if (device.ios && device.osVersion && ua.indexOf("Version/") >= 0) {
        if (device.osVersion.split(".")[0] === "10") {
          device.osVersion = ua.toLowerCase().split("version/")[1].split(" ")[0];
        }
      }
      device.desktop = !(device.os || device.android || device.webView);
      device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);
      if (device.os && device.os === "ios") {
        var osVersionArr = device.osVersion.split(".");
        var metaViewport = doc2.querySelector('meta[name="viewport"]');
        device.minimalUi = !device.webView && (ipod || iphone) && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) && metaViewport && metaViewport.getAttribute("content").indexOf("minimal-ui") >= 0;
      }
      device.pixelRatio = win2.devicePixelRatio || 1;
      return device;
    }();
    function onTouchStart2(event) {
      var swiper2 = this;
      var data3 = swiper2.touchEventsData;
      var params = swiper2.params;
      var touches = swiper2.touches;
      if (swiper2.animating && params.preventInteractionOnTransition) {
        return;
      }
      var e = event;
      if (e.originalEvent) {
        e = e.originalEvent;
      }
      data3.isTouchEvent = e.type === "touchstart";
      if (!data3.isTouchEvent && "which" in e && e.which === 3) {
        return;
      }
      if (!data3.isTouchEvent && "button" in e && e.button > 0) {
        return;
      }
      if (data3.isTouched && data3.isMoved) {
        return;
      }
      if (params.noSwiping && $2(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : "." + params.noSwipingClass)[0]) {
        swiper2.allowClick = true;
        return;
      }
      if (params.swipeHandler) {
        if (!$2(e).closest(params.swipeHandler)[0]) {
          return;
        }
      }
      touches.currentX = e.type === "touchstart" ? e.targetTouches[0].pageX : e.pageX;
      touches.currentY = e.type === "touchstart" ? e.targetTouches[0].pageY : e.pageY;
      var startX = touches.currentX;
      var startY = touches.currentY;
      var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
      var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
      if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= win2.screen.width - edgeSwipeThreshold)) {
        return;
      }
      Utils2.extend(data3, {
        isTouched: true,
        isMoved: false,
        allowTouchCallbacks: true,
        isScrolling: void 0,
        startMoving: void 0
      });
      touches.startX = startX;
      touches.startY = startY;
      data3.touchStartTime = Utils2.now();
      swiper2.allowClick = true;
      swiper2.updateSize();
      swiper2.swipeDirection = void 0;
      if (params.threshold > 0) {
        data3.allowThresholdMove = false;
      }
      if (e.type !== "touchstart") {
        var preventDefault = true;
        if ($2(e.target).is(data3.formElements)) {
          preventDefault = false;
        }
        if (doc2.activeElement && $2(doc2.activeElement).is(data3.formElements) && doc2.activeElement !== e.target) {
          doc2.activeElement.blur();
        }
        var shouldPreventDefault = preventDefault && swiper2.allowTouchMove && params.touchStartPreventDefault;
        if (params.touchStartForcePreventDefault || shouldPreventDefault) {
          e.preventDefault();
        }
      }
      swiper2.emit("touchStart", e);
    }
    function onTouchMove2(event) {
      var swiper2 = this;
      var data3 = swiper2.touchEventsData;
      var params = swiper2.params;
      var touches = swiper2.touches;
      var rtl = swiper2.rtlTranslate;
      var e = event;
      if (e.originalEvent) {
        e = e.originalEvent;
      }
      if (!data3.isTouched) {
        if (data3.startMoving && data3.isScrolling) {
          swiper2.emit("touchMoveOpposite", e);
        }
        return;
      }
      if (data3.isTouchEvent && e.type === "mousemove") {
        return;
      }
      var pageX = e.type === "touchmove" ? e.targetTouches[0].pageX : e.pageX;
      var pageY = e.type === "touchmove" ? e.targetTouches[0].pageY : e.pageY;
      if (e.preventedByNestedSwiper) {
        touches.startX = pageX;
        touches.startY = pageY;
        return;
      }
      if (!swiper2.allowTouchMove) {
        swiper2.allowClick = false;
        if (data3.isTouched) {
          Utils2.extend(touches, {
            startX: pageX,
            startY: pageY,
            currentX: pageX,
            currentY: pageY
          });
          data3.touchStartTime = Utils2.now();
        }
        return;
      }
      if (data3.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
        if (swiper2.isVertical()) {
          if (pageY < touches.startY && swiper2.translate <= swiper2.maxTranslate() || pageY > touches.startY && swiper2.translate >= swiper2.minTranslate()) {
            data3.isTouched = false;
            data3.isMoved = false;
            return;
          }
        } else if (pageX < touches.startX && swiper2.translate <= swiper2.maxTranslate() || pageX > touches.startX && swiper2.translate >= swiper2.minTranslate()) {
          return;
        }
      }
      if (data3.isTouchEvent && doc2.activeElement) {
        if (e.target === doc2.activeElement && $2(e.target).is(data3.formElements)) {
          data3.isMoved = true;
          swiper2.allowClick = false;
          return;
        }
      }
      if (data3.allowTouchCallbacks) {
        swiper2.emit("touchMove", e);
      }
      if (e.targetTouches && e.targetTouches.length > 1) {
        return;
      }
      touches.currentX = pageX;
      touches.currentY = pageY;
      var diffX = touches.currentX - touches.startX;
      var diffY = touches.currentY - touches.startY;
      if (swiper2.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper2.params.threshold) {
        return;
      }
      if (typeof data3.isScrolling === "undefined") {
        var touchAngle;
        if (swiper2.isHorizontal() && touches.currentY === touches.startY || swiper2.isVertical() && touches.currentX === touches.startX) {
          data3.isScrolling = false;
        } else {
          if (diffX * diffX + diffY * diffY >= 25) {
            touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
            data3.isScrolling = swiper2.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
          }
        }
      }
      if (data3.isScrolling) {
        swiper2.emit("touchMoveOpposite", e);
      }
      if (typeof data3.startMoving === "undefined") {
        if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
          data3.startMoving = true;
        }
      }
      if (data3.isScrolling) {
        data3.isTouched = false;
        return;
      }
      if (!data3.startMoving) {
        return;
      }
      swiper2.allowClick = false;
      e.preventDefault();
      if (params.touchMoveStopPropagation && !params.nested) {
        e.stopPropagation();
      }
      if (!data3.isMoved) {
        if (params.loop) {
          swiper2.loopFix();
        }
        data3.startTranslate = swiper2.getTranslate();
        swiper2.setTransition(0);
        if (swiper2.animating) {
          swiper2.$wrapperEl.trigger("webkitTransitionEnd transitionend");
        }
        data3.allowMomentumBounce = false;
        if (params.grabCursor && (swiper2.allowSlideNext === true || swiper2.allowSlidePrev === true)) {
          swiper2.setGrabCursor(true);
        }
        swiper2.emit("sliderFirstMove", e);
      }
      swiper2.emit("sliderMove", e);
      data3.isMoved = true;
      var diff = swiper2.isHorizontal() ? diffX : diffY;
      touches.diff = diff;
      diff *= params.touchRatio;
      if (rtl) {
        diff = -diff;
      }
      swiper2.swipeDirection = diff > 0 ? "prev" : "next";
      data3.currentTranslate = diff + data3.startTranslate;
      var disableParentSwiper = true;
      var resistanceRatio = params.resistanceRatio;
      if (params.touchReleaseOnEdges) {
        resistanceRatio = 0;
      }
      if (diff > 0 && data3.currentTranslate > swiper2.minTranslate()) {
        disableParentSwiper = false;
        if (params.resistance) {
          data3.currentTranslate = swiper2.minTranslate() - 1 + Math.pow(-swiper2.minTranslate() + data3.startTranslate + diff, resistanceRatio);
        }
      } else if (diff < 0 && data3.currentTranslate < swiper2.maxTranslate()) {
        disableParentSwiper = false;
        if (params.resistance) {
          data3.currentTranslate = swiper2.maxTranslate() + 1 - Math.pow(swiper2.maxTranslate() - data3.startTranslate - diff, resistanceRatio);
        }
      }
      if (disableParentSwiper) {
        e.preventedByNestedSwiper = true;
      }
      if (!swiper2.allowSlideNext && swiper2.swipeDirection === "next" && data3.currentTranslate < data3.startTranslate) {
        data3.currentTranslate = data3.startTranslate;
      }
      if (!swiper2.allowSlidePrev && swiper2.swipeDirection === "prev" && data3.currentTranslate > data3.startTranslate) {
        data3.currentTranslate = data3.startTranslate;
      }
      if (params.threshold > 0) {
        if (Math.abs(diff) > params.threshold || data3.allowThresholdMove) {
          if (!data3.allowThresholdMove) {
            data3.allowThresholdMove = true;
            touches.startX = touches.currentX;
            touches.startY = touches.currentY;
            data3.currentTranslate = data3.startTranslate;
            touches.diff = swiper2.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
            return;
          }
        } else {
          data3.currentTranslate = data3.startTranslate;
          return;
        }
      }
      if (!params.followFinger) {
        return;
      }
      if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
        swiper2.updateActiveIndex();
        swiper2.updateSlidesClasses();
      }
      if (params.freeMode) {
        if (data3.velocities.length === 0) {
          data3.velocities.push({
            position: touches[swiper2.isHorizontal() ? "startX" : "startY"],
            time: data3.touchStartTime
          });
        }
        data3.velocities.push({
          position: touches[swiper2.isHorizontal() ? "currentX" : "currentY"],
          time: Utils2.now()
        });
      }
      swiper2.updateProgress(data3.currentTranslate);
      swiper2.setTranslate(data3.currentTranslate);
    }
    function onTouchEnd2(event) {
      var swiper2 = this;
      var data3 = swiper2.touchEventsData;
      var params = swiper2.params;
      var touches = swiper2.touches;
      var rtl = swiper2.rtlTranslate;
      var $wrapperEl = swiper2.$wrapperEl;
      var slidesGrid = swiper2.slidesGrid;
      var snapGrid = swiper2.snapGrid;
      var e = event;
      if (e.originalEvent) {
        e = e.originalEvent;
      }
      if (data3.allowTouchCallbacks) {
        swiper2.emit("touchEnd", e);
      }
      data3.allowTouchCallbacks = false;
      if (!data3.isTouched) {
        if (data3.isMoved && params.grabCursor) {
          swiper2.setGrabCursor(false);
        }
        data3.isMoved = false;
        data3.startMoving = false;
        return;
      }
      if (params.grabCursor && data3.isMoved && data3.isTouched && (swiper2.allowSlideNext === true || swiper2.allowSlidePrev === true)) {
        swiper2.setGrabCursor(false);
      }
      var touchEndTime = Utils2.now();
      var timeDiff = touchEndTime - data3.touchStartTime;
      if (swiper2.allowClick) {
        swiper2.updateClickedSlide(e);
        swiper2.emit("tap", e);
        if (timeDiff < 300 && touchEndTime - data3.lastClickTime > 300) {
          if (data3.clickTimeout) {
            clearTimeout(data3.clickTimeout);
          }
          data3.clickTimeout = Utils2.nextTick(function() {
            if (!swiper2 || swiper2.destroyed) {
              return;
            }
            swiper2.emit("click", e);
          }, 300);
        }
        if (timeDiff < 300 && touchEndTime - data3.lastClickTime < 300) {
          if (data3.clickTimeout) {
            clearTimeout(data3.clickTimeout);
          }
          swiper2.emit("doubleTap", e);
        }
      }
      data3.lastClickTime = Utils2.now();
      Utils2.nextTick(function() {
        if (!swiper2.destroyed) {
          swiper2.allowClick = true;
        }
      });
      if (!data3.isTouched || !data3.isMoved || !swiper2.swipeDirection || touches.diff === 0 || data3.currentTranslate === data3.startTranslate) {
        data3.isTouched = false;
        data3.isMoved = false;
        data3.startMoving = false;
        return;
      }
      data3.isTouched = false;
      data3.isMoved = false;
      data3.startMoving = false;
      var currentPos;
      if (params.followFinger) {
        currentPos = rtl ? swiper2.translate : -swiper2.translate;
      } else {
        currentPos = -data3.currentTranslate;
      }
      if (params.freeMode) {
        if (currentPos < -swiper2.minTranslate()) {
          swiper2.slideTo(swiper2.activeIndex);
          return;
        }
        if (currentPos > -swiper2.maxTranslate()) {
          if (swiper2.slides.length < snapGrid.length) {
            swiper2.slideTo(snapGrid.length - 1);
          } else {
            swiper2.slideTo(swiper2.slides.length - 1);
          }
          return;
        }
        if (params.freeModeMomentum) {
          if (data3.velocities.length > 1) {
            var lastMoveEvent = data3.velocities.pop();
            var velocityEvent = data3.velocities.pop();
            var distance = lastMoveEvent.position - velocityEvent.position;
            var time = lastMoveEvent.time - velocityEvent.time;
            swiper2.velocity = distance / time;
            swiper2.velocity /= 2;
            if (Math.abs(swiper2.velocity) < params.freeModeMinimumVelocity) {
              swiper2.velocity = 0;
            }
            if (time > 150 || Utils2.now() - lastMoveEvent.time > 300) {
              swiper2.velocity = 0;
            }
          } else {
            swiper2.velocity = 0;
          }
          swiper2.velocity *= params.freeModeMomentumVelocityRatio;
          data3.velocities.length = 0;
          var momentumDuration = 1e3 * params.freeModeMomentumRatio;
          var momentumDistance = swiper2.velocity * momentumDuration;
          var newPosition = swiper2.translate + momentumDistance;
          if (rtl) {
            newPosition = -newPosition;
          }
          var doBounce = false;
          var afterBouncePosition;
          var bounceAmount = Math.abs(swiper2.velocity) * 20 * params.freeModeMomentumBounceRatio;
          var needsLoopFix;
          if (newPosition < swiper2.maxTranslate()) {
            if (params.freeModeMomentumBounce) {
              if (newPosition + swiper2.maxTranslate() < -bounceAmount) {
                newPosition = swiper2.maxTranslate() - bounceAmount;
              }
              afterBouncePosition = swiper2.maxTranslate();
              doBounce = true;
              data3.allowMomentumBounce = true;
            } else {
              newPosition = swiper2.maxTranslate();
            }
            if (params.loop && params.centeredSlides) {
              needsLoopFix = true;
            }
          } else if (newPosition > swiper2.minTranslate()) {
            if (params.freeModeMomentumBounce) {
              if (newPosition - swiper2.minTranslate() > bounceAmount) {
                newPosition = swiper2.minTranslate() + bounceAmount;
              }
              afterBouncePosition = swiper2.minTranslate();
              doBounce = true;
              data3.allowMomentumBounce = true;
            } else {
              newPosition = swiper2.minTranslate();
            }
            if (params.loop && params.centeredSlides) {
              needsLoopFix = true;
            }
          } else if (params.freeModeSticky) {
            var nextSlide;
            for (var j = 0; j < snapGrid.length; j += 1) {
              if (snapGrid[j] > -newPosition) {
                nextSlide = j;
                break;
              }
            }
            if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper2.swipeDirection === "next") {
              newPosition = snapGrid[nextSlide];
            } else {
              newPosition = snapGrid[nextSlide - 1];
            }
            newPosition = -newPosition;
          }
          if (needsLoopFix) {
            swiper2.once("transitionEnd", function() {
              swiper2.loopFix();
            });
          }
          if (swiper2.velocity !== 0) {
            if (rtl) {
              momentumDuration = Math.abs((-newPosition - swiper2.translate) / swiper2.velocity);
            } else {
              momentumDuration = Math.abs((newPosition - swiper2.translate) / swiper2.velocity);
            }
          } else if (params.freeModeSticky) {
            swiper2.slideToClosest();
            return;
          }
          if (params.freeModeMomentumBounce && doBounce) {
            swiper2.updateProgress(afterBouncePosition);
            swiper2.setTransition(momentumDuration);
            swiper2.setTranslate(newPosition);
            swiper2.transitionStart(true, swiper2.swipeDirection);
            swiper2.animating = true;
            $wrapperEl.transitionEnd(function() {
              if (!swiper2 || swiper2.destroyed || !data3.allowMomentumBounce) {
                return;
              }
              swiper2.emit("momentumBounce");
              swiper2.setTransition(params.speed);
              swiper2.setTranslate(afterBouncePosition);
              $wrapperEl.transitionEnd(function() {
                if (!swiper2 || swiper2.destroyed) {
                  return;
                }
                swiper2.transitionEnd();
              });
            });
          } else if (swiper2.velocity) {
            swiper2.updateProgress(newPosition);
            swiper2.setTransition(momentumDuration);
            swiper2.setTranslate(newPosition);
            swiper2.transitionStart(true, swiper2.swipeDirection);
            if (!swiper2.animating) {
              swiper2.animating = true;
              $wrapperEl.transitionEnd(function() {
                if (!swiper2 || swiper2.destroyed) {
                  return;
                }
                swiper2.transitionEnd();
              });
            }
          } else {
            swiper2.updateProgress(newPosition);
          }
          swiper2.updateActiveIndex();
          swiper2.updateSlidesClasses();
        } else if (params.freeModeSticky) {
          swiper2.slideToClosest();
          return;
        }
        if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
          swiper2.updateProgress();
          swiper2.updateActiveIndex();
          swiper2.updateSlidesClasses();
        }
        return;
      }
      var stopIndex = 0;
      var groupSize = swiper2.slidesSizesGrid[0];
      for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {
        if (typeof slidesGrid[i + params.slidesPerGroup] !== "undefined") {
          if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {
            stopIndex = i;
            groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];
          }
        } else if (currentPos >= slidesGrid[i]) {
          stopIndex = i;
          groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
        }
      }
      var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
      if (timeDiff > params.longSwipesMs) {
        if (!params.longSwipes) {
          swiper2.slideTo(swiper2.activeIndex);
          return;
        }
        if (swiper2.swipeDirection === "next") {
          if (ratio >= params.longSwipesRatio) {
            swiper2.slideTo(stopIndex + params.slidesPerGroup);
          } else {
            swiper2.slideTo(stopIndex);
          }
        }
        if (swiper2.swipeDirection === "prev") {
          if (ratio > 1 - params.longSwipesRatio) {
            swiper2.slideTo(stopIndex + params.slidesPerGroup);
          } else {
            swiper2.slideTo(stopIndex);
          }
        }
      } else {
        if (!params.shortSwipes) {
          swiper2.slideTo(swiper2.activeIndex);
          return;
        }
        if (swiper2.swipeDirection === "next") {
          swiper2.slideTo(stopIndex + params.slidesPerGroup);
        }
        if (swiper2.swipeDirection === "prev") {
          swiper2.slideTo(stopIndex);
        }
      }
    }
    function onResize2() {
      var swiper2 = this;
      var params = swiper2.params;
      var el = swiper2.el;
      if (el && el.offsetWidth === 0) {
        return;
      }
      if (params.breakpoints) {
        swiper2.setBreakpoint();
      }
      var allowSlideNext = swiper2.allowSlideNext;
      var allowSlidePrev = swiper2.allowSlidePrev;
      var snapGrid = swiper2.snapGrid;
      swiper2.allowSlideNext = true;
      swiper2.allowSlidePrev = true;
      swiper2.updateSize();
      swiper2.updateSlides();
      if (params.freeMode) {
        var newTranslate = Math.min(Math.max(swiper2.translate, swiper2.maxTranslate()), swiper2.minTranslate());
        swiper2.setTranslate(newTranslate);
        swiper2.updateActiveIndex();
        swiper2.updateSlidesClasses();
        if (params.autoHeight) {
          swiper2.updateAutoHeight();
        }
      } else {
        swiper2.updateSlidesClasses();
        if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper2.isEnd && !swiper2.params.centeredSlides) {
          swiper2.slideTo(swiper2.slides.length - 1, 0, false, true);
        } else {
          swiper2.slideTo(swiper2.activeIndex, 0, false, true);
        }
      }
      if (swiper2.autoplay && swiper2.autoplay.running && swiper2.autoplay.paused) {
        swiper2.autoplay.run();
      }
      swiper2.allowSlidePrev = allowSlidePrev;
      swiper2.allowSlideNext = allowSlideNext;
      if (swiper2.params.watchOverflow && snapGrid !== swiper2.snapGrid) {
        swiper2.checkOverflow();
      }
    }
    function onClick2(e) {
      var swiper2 = this;
      if (!swiper2.allowClick) {
        if (swiper2.params.preventClicks) {
          e.preventDefault();
        }
        if (swiper2.params.preventClicksPropagation && swiper2.animating) {
          e.stopPropagation();
          e.stopImmediatePropagation();
        }
      }
    }
    function attachEvents2() {
      var swiper2 = this;
      var params = swiper2.params;
      var touchEvents = swiper2.touchEvents;
      var el = swiper2.el;
      var wrapperEl = swiper2.wrapperEl;
      {
        swiper2.onTouchStart = onTouchStart2.bind(swiper2);
        swiper2.onTouchMove = onTouchMove2.bind(swiper2);
        swiper2.onTouchEnd = onTouchEnd2.bind(swiper2);
      }
      swiper2.onClick = onClick2.bind(swiper2);
      var target = params.touchEventsTarget === "container" ? el : wrapperEl;
      var capture = !!params.nested;
      {
        if (!Support3.touch && (Support3.pointerEvents || Support3.prefixedPointerEvents)) {
          target.addEventListener(touchEvents.start, swiper2.onTouchStart, false);
          doc2.addEventListener(touchEvents.move, swiper2.onTouchMove, capture);
          doc2.addEventListener(touchEvents.end, swiper2.onTouchEnd, false);
        } else {
          if (Support3.touch) {
            var passiveListener = touchEvents.start === "touchstart" && Support3.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
            target.addEventListener(touchEvents.start, swiper2.onTouchStart, passiveListener);
            target.addEventListener(touchEvents.move, swiper2.onTouchMove, Support3.passiveListener ? { passive: false, capture } : capture);
            target.addEventListener(touchEvents.end, swiper2.onTouchEnd, passiveListener);
          }
          if (params.simulateTouch && !Device3.ios && !Device3.android || params.simulateTouch && !Support3.touch && Device3.ios) {
            target.addEventListener("mousedown", swiper2.onTouchStart, false);
            doc2.addEventListener("mousemove", swiper2.onTouchMove, capture);
            doc2.addEventListener("mouseup", swiper2.onTouchEnd, false);
          }
        }
        if (params.preventClicks || params.preventClicksPropagation) {
          target.addEventListener("click", swiper2.onClick, true);
        }
      }
      swiper2.on(Device3.ios || Device3.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", onResize2, true);
    }
    function detachEvents2() {
      var swiper2 = this;
      var params = swiper2.params;
      var touchEvents = swiper2.touchEvents;
      var el = swiper2.el;
      var wrapperEl = swiper2.wrapperEl;
      var target = params.touchEventsTarget === "container" ? el : wrapperEl;
      var capture = !!params.nested;
      {
        if (!Support3.touch && (Support3.pointerEvents || Support3.prefixedPointerEvents)) {
          target.removeEventListener(touchEvents.start, swiper2.onTouchStart, false);
          doc2.removeEventListener(touchEvents.move, swiper2.onTouchMove, capture);
          doc2.removeEventListener(touchEvents.end, swiper2.onTouchEnd, false);
        } else {
          if (Support3.touch) {
            var passiveListener = touchEvents.start === "onTouchStart" && Support3.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
            target.removeEventListener(touchEvents.start, swiper2.onTouchStart, passiveListener);
            target.removeEventListener(touchEvents.move, swiper2.onTouchMove, capture);
            target.removeEventListener(touchEvents.end, swiper2.onTouchEnd, passiveListener);
          }
          if (params.simulateTouch && !Device3.ios && !Device3.android || params.simulateTouch && !Support3.touch && Device3.ios) {
            target.removeEventListener("mousedown", swiper2.onTouchStart, false);
            doc2.removeEventListener("mousemove", swiper2.onTouchMove, capture);
            doc2.removeEventListener("mouseup", swiper2.onTouchEnd, false);
          }
        }
        if (params.preventClicks || params.preventClicksPropagation) {
          target.removeEventListener("click", swiper2.onClick, true);
        }
      }
      swiper2.off(Device3.ios || Device3.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", onResize2);
    }
    var events2 = {
      attachEvents: attachEvents2,
      detachEvents: detachEvents2
    };
    function setBreakpoint2() {
      var swiper2 = this;
      var activeIndex = swiper2.activeIndex;
      var initialized = swiper2.initialized;
      var loopedSlides = swiper2.loopedSlides;
      if (loopedSlides === void 0)
        loopedSlides = 0;
      var params = swiper2.params;
      var breakpoints3 = params.breakpoints;
      if (!breakpoints3 || breakpoints3 && Object.keys(breakpoints3).length === 0) {
        return;
      }
      var breakpoint = swiper2.getBreakpoint(breakpoints3);
      if (breakpoint && swiper2.currentBreakpoint !== breakpoint) {
        var breakpointOnlyParams = breakpoint in breakpoints3 ? breakpoints3[breakpoint] : void 0;
        if (breakpointOnlyParams) {
          ["slidesPerView", "spaceBetween", "slidesPerGroup"].forEach(function(param) {
            var paramValue = breakpointOnlyParams[param];
            if (typeof paramValue === "undefined") {
              return;
            }
            if (param === "slidesPerView" && (paramValue === "AUTO" || paramValue === "auto")) {
              breakpointOnlyParams[param] = "auto";
            } else if (param === "slidesPerView") {
              breakpointOnlyParams[param] = parseFloat(paramValue);
            } else {
              breakpointOnlyParams[param] = parseInt(paramValue, 10);
            }
          });
        }
        var breakpointParams = breakpointOnlyParams || swiper2.originalParams;
        var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
        var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
        if (directionChanged && initialized) {
          swiper2.changeDirection();
        }
        Utils2.extend(swiper2.params, breakpointParams);
        Utils2.extend(swiper2, {
          allowTouchMove: swiper2.params.allowTouchMove,
          allowSlideNext: swiper2.params.allowSlideNext,
          allowSlidePrev: swiper2.params.allowSlidePrev
        });
        swiper2.currentBreakpoint = breakpoint;
        if (needsReLoop && initialized) {
          swiper2.loopDestroy();
          swiper2.loopCreate();
          swiper2.updateSlides();
          swiper2.slideTo(activeIndex - loopedSlides + swiper2.loopedSlides, 0, false);
        }
        swiper2.emit("breakpoint", breakpointParams);
      }
    }
    function getBreakpoint2(breakpoints3) {
      var swiper2 = this;
      if (!breakpoints3) {
        return void 0;
      }
      var breakpoint = false;
      var points = [];
      Object.keys(breakpoints3).forEach(function(point2) {
        points.push(point2);
      });
      points.sort(function(a, b) {
        return parseInt(a, 10) - parseInt(b, 10);
      });
      for (var i = 0; i < points.length; i += 1) {
        var point = points[i];
        if (swiper2.params.breakpointsInverse) {
          if (point <= win2.innerWidth) {
            breakpoint = point;
          }
        } else if (point >= win2.innerWidth && !breakpoint) {
          breakpoint = point;
        }
      }
      return breakpoint || "max";
    }
    var breakpoints2 = { setBreakpoint: setBreakpoint2, getBreakpoint: getBreakpoint2 };
    function addClasses2() {
      var swiper2 = this;
      var classNames = swiper2.classNames;
      var params = swiper2.params;
      var rtl = swiper2.rtl;
      var $el = swiper2.$el;
      var suffixes = [];
      suffixes.push("initialized");
      suffixes.push(params.direction);
      if (params.freeMode) {
        suffixes.push("free-mode");
      }
      if (!Support3.flexbox) {
        suffixes.push("no-flexbox");
      }
      if (params.autoHeight) {
        suffixes.push("autoheight");
      }
      if (rtl) {
        suffixes.push("rtl");
      }
      if (params.slidesPerColumn > 1) {
        suffixes.push("multirow");
      }
      if (Device3.android) {
        suffixes.push("android");
      }
      if (Device3.ios) {
        suffixes.push("ios");
      }
      if ((Browser3.isIE || Browser3.isEdge) && (Support3.pointerEvents || Support3.prefixedPointerEvents)) {
        suffixes.push("wp8-" + params.direction);
      }
      suffixes.forEach(function(suffix) {
        classNames.push(params.containerModifierClass + suffix);
      });
      $el.addClass(classNames.join(" "));
    }
    function removeClasses2() {
      var swiper2 = this;
      var $el = swiper2.$el;
      var classNames = swiper2.classNames;
      $el.removeClass(classNames.join(" "));
    }
    var classes2 = { addClasses: addClasses2, removeClasses: removeClasses2 };
    function loadImage2(imageEl, src, srcset, sizes, checkForComplete, callback) {
      var image;
      function onReady() {
        if (callback) {
          callback();
        }
      }
      if (!imageEl.complete || !checkForComplete) {
        if (src) {
          image = new win2.Image();
          image.onload = onReady;
          image.onerror = onReady;
          if (sizes) {
            image.sizes = sizes;
          }
          if (srcset) {
            image.srcset = srcset;
          }
          if (src) {
            image.src = src;
          }
        } else {
          onReady();
        }
      } else {
        onReady();
      }
    }
    function preloadImages2() {
      var swiper2 = this;
      swiper2.imagesToLoad = swiper2.$el.find("img");
      function onReady() {
        if (typeof swiper2 === "undefined" || swiper2 === null || !swiper2 || swiper2.destroyed) {
          return;
        }
        if (swiper2.imagesLoaded !== void 0) {
          swiper2.imagesLoaded += 1;
        }
        if (swiper2.imagesLoaded === swiper2.imagesToLoad.length) {
          if (swiper2.params.updateOnImagesReady) {
            swiper2.update();
          }
          swiper2.emit("imagesReady");
        }
      }
      for (var i = 0; i < swiper2.imagesToLoad.length; i += 1) {
        var imageEl = swiper2.imagesToLoad[i];
        swiper2.loadImage(
          imageEl,
          imageEl.currentSrc || imageEl.getAttribute("src"),
          imageEl.srcset || imageEl.getAttribute("srcset"),
          imageEl.sizes || imageEl.getAttribute("sizes"),
          true,
          onReady
        );
      }
    }
    var images2 = {
      loadImage: loadImage2,
      preloadImages: preloadImages2
    };
    function checkOverflow2() {
      var swiper2 = this;
      var wasLocked = swiper2.isLocked;
      swiper2.isLocked = swiper2.snapGrid.length === 1;
      swiper2.allowSlideNext = !swiper2.isLocked;
      swiper2.allowSlidePrev = !swiper2.isLocked;
      if (wasLocked !== swiper2.isLocked) {
        swiper2.emit(swiper2.isLocked ? "lock" : "unlock");
      }
      if (wasLocked && wasLocked !== swiper2.isLocked) {
        swiper2.isEnd = false;
        swiper2.navigation.update();
      }
    }
    var checkOverflow$12 = { checkOverflow: checkOverflow2 };
    var defaults2 = {
      init: true,
      direction: "horizontal",
      touchEventsTarget: "container",
      initialSlide: 0,
      speed: 300,
      //
      preventInteractionOnTransition: false,
      // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
      edgeSwipeDetection: false,
      edgeSwipeThreshold: 20,
      // Free mode
      freeMode: false,
      freeModeMomentum: true,
      freeModeMomentumRatio: 1,
      freeModeMomentumBounce: true,
      freeModeMomentumBounceRatio: 1,
      freeModeMomentumVelocityRatio: 1,
      freeModeSticky: false,
      freeModeMinimumVelocity: 0.02,
      // Autoheight
      autoHeight: false,
      // Set wrapper width
      setWrapperSize: false,
      // Virtual Translate
      virtualTranslate: false,
      // Effects
      effect: "slide",
      // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
      // Breakpoints
      breakpoints: void 0,
      breakpointsInverse: false,
      // Slides grid
      spaceBetween: 0,
      slidesPerView: 1,
      slidesPerColumn: 1,
      slidesPerColumnFill: "column",
      slidesPerGroup: 1,
      centeredSlides: false,
      slidesOffsetBefore: 0,
      // in px
      slidesOffsetAfter: 0,
      // in px
      normalizeSlideIndex: true,
      centerInsufficientSlides: false,
      // Disable swiper and hide navigation when container not overflow
      watchOverflow: false,
      // Round length
      roundLengths: false,
      // Touches
      touchRatio: 1,
      touchAngle: 45,
      simulateTouch: true,
      shortSwipes: true,
      longSwipes: true,
      longSwipesRatio: 0.5,
      longSwipesMs: 300,
      followFinger: true,
      allowTouchMove: true,
      threshold: 0,
      touchMoveStopPropagation: true,
      touchStartPreventDefault: true,
      touchStartForcePreventDefault: false,
      touchReleaseOnEdges: false,
      // Unique Navigation Elements
      uniqueNavElements: true,
      // Resistance
      resistance: true,
      resistanceRatio: 0.85,
      // Progress
      watchSlidesProgress: false,
      watchSlidesVisibility: false,
      // Cursor
      grabCursor: false,
      // Clicks
      preventClicks: true,
      preventClicksPropagation: true,
      slideToClickedSlide: false,
      // Images
      preloadImages: true,
      updateOnImagesReady: true,
      // loop
      loop: false,
      loopAdditionalSlides: 0,
      loopedSlides: null,
      loopFillGroupWithBlank: false,
      // Swiping/no swiping
      allowSlidePrev: true,
      allowSlideNext: true,
      swipeHandler: null,
      // '.swipe-handler',
      noSwiping: true,
      noSwipingClass: "swiper-no-swiping",
      noSwipingSelector: null,
      // Passive Listeners
      passiveListeners: true,
      // NS
      containerModifierClass: "swiper-container-",
      // NEW
      slideClass: "swiper-slide",
      slideBlankClass: "swiper-slide-invisible-blank",
      slideActiveClass: "swiper-slide-active",
      slideDuplicateActiveClass: "swiper-slide-duplicate-active",
      slideVisibleClass: "swiper-slide-visible",
      slideDuplicateClass: "swiper-slide-duplicate",
      slideNextClass: "swiper-slide-next",
      slideDuplicateNextClass: "swiper-slide-duplicate-next",
      slidePrevClass: "swiper-slide-prev",
      slideDuplicatePrevClass: "swiper-slide-duplicate-prev",
      wrapperClass: "swiper-wrapper",
      // Callbacks
      runCallbacksOnInit: true
    };
    var prototypes2 = {
      update: update2,
      translate: translate2,
      transition: transition$12,
      slide: slide2,
      loop: loop2,
      grabCursor: grabCursor2,
      manipulation: manipulation2,
      events: events2,
      breakpoints: breakpoints2,
      checkOverflow: checkOverflow$12,
      classes: classes2,
      images: images2
    };
    var extendedDefaults2 = {};
    var Swiper2 = /* @__PURE__ */ function(SwiperClass3) {
      function Swiper3() {
        var assign;
        var args = [], len = arguments.length;
        while (len--)
          args[len] = arguments[len];
        var el;
        var params;
        if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
          params = args[0];
        } else {
          assign = args, el = assign[0], params = assign[1];
        }
        if (!params) {
          params = {};
        }
        params = Utils2.extend({}, params);
        if (el && !params.el) {
          params.el = el;
        }
        SwiperClass3.call(this, params);
        Object.keys(prototypes2).forEach(function(prototypeGroup) {
          Object.keys(prototypes2[prototypeGroup]).forEach(function(protoMethod) {
            if (!Swiper3.prototype[protoMethod]) {
              Swiper3.prototype[protoMethod] = prototypes2[prototypeGroup][protoMethod];
            }
          });
        });
        var swiper2 = this;
        if (typeof swiper2.modules === "undefined") {
          swiper2.modules = {};
        }
        Object.keys(swiper2.modules).forEach(function(moduleName) {
          var module3 = swiper2.modules[moduleName];
          if (module3.params) {
            var moduleParamName = Object.keys(module3.params)[0];
            var moduleParams = module3.params[moduleParamName];
            if (typeof moduleParams !== "object" || moduleParams === null) {
              return;
            }
            if (!(moduleParamName in params && "enabled" in moduleParams)) {
              return;
            }
            if (params[moduleParamName] === true) {
              params[moduleParamName] = { enabled: true };
            }
            if (typeof params[moduleParamName] === "object" && !("enabled" in params[moduleParamName])) {
              params[moduleParamName].enabled = true;
            }
            if (!params[moduleParamName]) {
              params[moduleParamName] = { enabled: false };
            }
          }
        });
        var swiperParams = Utils2.extend({}, defaults2);
        swiper2.useModulesParams(swiperParams);
        swiper2.params = Utils2.extend({}, swiperParams, extendedDefaults2, params);
        swiper2.originalParams = Utils2.extend({}, swiper2.params);
        swiper2.passedParams = Utils2.extend({}, params);
        swiper2.$ = $2;
        var $el = $2(swiper2.params.el);
        el = $el[0];
        if (!el) {
          return void 0;
        }
        if ($el.length > 1) {
          var swipers = [];
          $el.each(function(index3, containerEl) {
            var newParams = Utils2.extend({}, params, { el: containerEl });
            swipers.push(new Swiper3(newParams));
          });
          return swipers;
        }
        el.swiper = swiper2;
        $el.data("swiper", swiper2);
        var $wrapperEl = $el.children("." + swiper2.params.wrapperClass);
        Utils2.extend(swiper2, {
          $el,
          el,
          $wrapperEl,
          wrapperEl: $wrapperEl[0],
          // Classes
          classNames: [],
          // Slides
          slides: $2(),
          slidesGrid: [],
          snapGrid: [],
          slidesSizesGrid: [],
          // isDirection
          isHorizontal: function isHorizontal() {
            return swiper2.params.direction === "horizontal";
          },
          isVertical: function isVertical() {
            return swiper2.params.direction === "vertical";
          },
          // RTL
          rtl: el.dir.toLowerCase() === "rtl" || $el.css("direction") === "rtl",
          rtlTranslate: swiper2.params.direction === "horizontal" && (el.dir.toLowerCase() === "rtl" || $el.css("direction") === "rtl"),
          wrongRTL: $wrapperEl.css("display") === "-webkit-box",
          // Indexes
          activeIndex: 0,
          realIndex: 0,
          //
          isBeginning: true,
          isEnd: false,
          // Props
          translate: 0,
          previousTranslate: 0,
          progress: 0,
          velocity: 0,
          animating: false,
          // Locks
          allowSlideNext: swiper2.params.allowSlideNext,
          allowSlidePrev: swiper2.params.allowSlidePrev,
          // Touch Events
          touchEvents: function touchEvents() {
            var touch = ["touchstart", "touchmove", "touchend"];
            var desktop = ["mousedown", "mousemove", "mouseup"];
            if (Support3.pointerEvents) {
              desktop = ["pointerdown", "pointermove", "pointerup"];
            } else if (Support3.prefixedPointerEvents) {
              desktop = ["MSPointerDown", "MSPointerMove", "MSPointerUp"];
            }
            swiper2.touchEventsTouch = {
              start: touch[0],
              move: touch[1],
              end: touch[2]
            };
            swiper2.touchEventsDesktop = {
              start: desktop[0],
              move: desktop[1],
              end: desktop[2]
            };
            return Support3.touch || !swiper2.params.simulateTouch ? swiper2.touchEventsTouch : swiper2.touchEventsDesktop;
          }(),
          touchEventsData: {
            isTouched: void 0,
            isMoved: void 0,
            allowTouchCallbacks: void 0,
            touchStartTime: void 0,
            isScrolling: void 0,
            currentTranslate: void 0,
            startTranslate: void 0,
            allowThresholdMove: void 0,
            // Form elements to match
            formElements: "input, select, option, textarea, button, video",
            // Last click time
            lastClickTime: Utils2.now(),
            clickTimeout: void 0,
            // Velocities
            velocities: [],
            allowMomentumBounce: void 0,
            isTouchEvent: void 0,
            startMoving: void 0
          },
          // Clicks
          allowClick: true,
          // Touches
          allowTouchMove: swiper2.params.allowTouchMove,
          touches: {
            startX: 0,
            startY: 0,
            currentX: 0,
            currentY: 0,
            diff: 0
          },
          // Images
          imagesToLoad: [],
          imagesLoaded: 0
        });
        swiper2.useModules();
        if (swiper2.params.init) {
          swiper2.init();
        }
        return swiper2;
      }
      if (SwiperClass3)
        Swiper3.__proto__ = SwiperClass3;
      Swiper3.prototype = Object.create(SwiperClass3 && SwiperClass3.prototype);
      Swiper3.prototype.constructor = Swiper3;
      var staticAccessors2 = { extendedDefaults: { configurable: true }, defaults: { configurable: true }, Class: { configurable: true }, $: { configurable: true } };
      Swiper3.prototype.slidesPerViewDynamic = function slidesPerViewDynamic() {
        var swiper2 = this;
        var params = swiper2.params;
        var slides = swiper2.slides;
        var slidesGrid = swiper2.slidesGrid;
        var swiperSize = swiper2.size;
        var activeIndex = swiper2.activeIndex;
        var spv = 1;
        if (params.centeredSlides) {
          var slideSize = slides[activeIndex].swiperSlideSize;
          var breakLoop;
          for (var i = activeIndex + 1; i < slides.length; i += 1) {
            if (slides[i] && !breakLoop) {
              slideSize += slides[i].swiperSlideSize;
              spv += 1;
              if (slideSize > swiperSize) {
                breakLoop = true;
              }
            }
          }
          for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {
            if (slides[i$1] && !breakLoop) {
              slideSize += slides[i$1].swiperSlideSize;
              spv += 1;
              if (slideSize > swiperSize) {
                breakLoop = true;
              }
            }
          }
        } else {
          for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {
            if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {
              spv += 1;
            }
          }
        }
        return spv;
      };
      Swiper3.prototype.update = function update3() {
        var swiper2 = this;
        if (!swiper2 || swiper2.destroyed) {
          return;
        }
        var snapGrid = swiper2.snapGrid;
        var params = swiper2.params;
        if (params.breakpoints) {
          swiper2.setBreakpoint();
        }
        swiper2.updateSize();
        swiper2.updateSlides();
        swiper2.updateProgress();
        swiper2.updateSlidesClasses();
        function setTranslate3() {
          var translateValue = swiper2.rtlTranslate ? swiper2.translate * -1 : swiper2.translate;
          var newTranslate = Math.min(Math.max(translateValue, swiper2.maxTranslate()), swiper2.minTranslate());
          swiper2.setTranslate(newTranslate);
          swiper2.updateActiveIndex();
          swiper2.updateSlidesClasses();
        }
        var translated;
        if (swiper2.params.freeMode) {
          setTranslate3();
          if (swiper2.params.autoHeight) {
            swiper2.updateAutoHeight();
          }
        } else {
          if ((swiper2.params.slidesPerView === "auto" || swiper2.params.slidesPerView > 1) && swiper2.isEnd && !swiper2.params.centeredSlides) {
            translated = swiper2.slideTo(swiper2.slides.length - 1, 0, false, true);
          } else {
            translated = swiper2.slideTo(swiper2.activeIndex, 0, false, true);
          }
          if (!translated) {
            setTranslate3();
          }
        }
        if (params.watchOverflow && snapGrid !== swiper2.snapGrid) {
          swiper2.checkOverflow();
        }
        swiper2.emit("update");
      };
      Swiper3.prototype.changeDirection = function changeDirection(newDirection, needUpdate) {
        if (needUpdate === void 0)
          needUpdate = true;
        var swiper2 = this;
        var currentDirection = swiper2.params.direction;
        if (!newDirection) {
          newDirection = currentDirection === "horizontal" ? "vertical" : "horizontal";
        }
        if (newDirection === currentDirection || newDirection !== "horizontal" && newDirection !== "vertical") {
          return swiper2;
        }
        swiper2.$el.removeClass("" + swiper2.params.containerModifierClass + currentDirection + " wp8-" + currentDirection).addClass("" + swiper2.params.containerModifierClass + newDirection);
        if ((Browser3.isIE || Browser3.isEdge) && (Support3.pointerEvents || Support3.prefixedPointerEvents)) {
          swiper2.$el.addClass(swiper2.params.containerModifierClass + "wp8-" + newDirection);
        }
        swiper2.params.direction = newDirection;
        swiper2.slides.each(function(slideIndex, slideEl) {
          if (newDirection === "vertical") {
            slideEl.style.width = "";
          } else {
            slideEl.style.height = "";
          }
        });
        swiper2.emit("changeDirection");
        if (needUpdate) {
          swiper2.update();
        }
        return swiper2;
      };
      Swiper3.prototype.init = function init() {
        var swiper2 = this;
        if (swiper2.initialized) {
          return;
        }
        swiper2.emit("beforeInit");
        if (swiper2.params.breakpoints) {
          swiper2.setBreakpoint();
        }
        swiper2.addClasses();
        if (swiper2.params.loop) {
          swiper2.loopCreate();
        }
        swiper2.updateSize();
        swiper2.updateSlides();
        if (swiper2.params.watchOverflow) {
          swiper2.checkOverflow();
        }
        if (swiper2.params.grabCursor) {
          swiper2.setGrabCursor();
        }
        if (swiper2.params.preloadImages) {
          swiper2.preloadImages();
        }
        if (swiper2.params.loop) {
          swiper2.slideTo(swiper2.params.initialSlide + swiper2.loopedSlides, 0, swiper2.params.runCallbacksOnInit);
        } else {
          swiper2.slideTo(swiper2.params.initialSlide, 0, swiper2.params.runCallbacksOnInit);
        }
        swiper2.attachEvents();
        swiper2.initialized = true;
        swiper2.emit("init");
      };
      Swiper3.prototype.destroy = function destroy(deleteInstance, cleanStyles) {
        if (deleteInstance === void 0)
          deleteInstance = true;
        if (cleanStyles === void 0)
          cleanStyles = true;
        var swiper2 = this;
        var params = swiper2.params;
        var $el = swiper2.$el;
        var $wrapperEl = swiper2.$wrapperEl;
        var slides = swiper2.slides;
        if (typeof swiper2.params === "undefined" || swiper2.destroyed) {
          return null;
        }
        swiper2.emit("beforeDestroy");
        swiper2.initialized = false;
        swiper2.detachEvents();
        if (params.loop) {
          swiper2.loopDestroy();
        }
        if (cleanStyles) {
          swiper2.removeClasses();
          $el.removeAttr("style");
          $wrapperEl.removeAttr("style");
          if (slides && slides.length) {
            slides.removeClass([
              params.slideVisibleClass,
              params.slideActiveClass,
              params.slideNextClass,
              params.slidePrevClass
            ].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index").removeAttr("data-swiper-column").removeAttr("data-swiper-row");
          }
        }
        swiper2.emit("destroy");
        Object.keys(swiper2.eventsListeners).forEach(function(eventName) {
          swiper2.off(eventName);
        });
        if (deleteInstance !== false) {
          swiper2.$el[0].swiper = null;
          swiper2.$el.data("swiper", null);
          Utils2.deleteProps(swiper2);
        }
        swiper2.destroyed = true;
        return null;
      };
      Swiper3.extendDefaults = function extendDefaults(newDefaults) {
        Utils2.extend(extendedDefaults2, newDefaults);
      };
      staticAccessors2.extendedDefaults.get = function() {
        return extendedDefaults2;
      };
      staticAccessors2.defaults.get = function() {
        return defaults2;
      };
      staticAccessors2.Class.get = function() {
        return SwiperClass3;
      };
      staticAccessors2.$.get = function() {
        return $2;
      };
      Object.defineProperties(Swiper3, staticAccessors2);
      return Swiper3;
    }(SwiperClass2);
    var Device$12 = {
      name: "device",
      proto: {
        device: Device3
      },
      static: {
        device: Device3
      }
    };
    var Support$12 = {
      name: "support",
      proto: {
        support: Support3
      },
      static: {
        support: Support3
      }
    };
    var Browser$12 = {
      name: "browser",
      proto: {
        browser: Browser3
      },
      static: {
        browser: Browser3
      }
    };
    var Resize2 = {
      name: "resize",
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          resize: {
            resizeHandler: function resizeHandler() {
              if (!swiper2 || swiper2.destroyed || !swiper2.initialized) {
                return;
              }
              swiper2.emit("beforeResize");
              swiper2.emit("resize");
            },
            orientationChangeHandler: function orientationChangeHandler() {
              if (!swiper2 || swiper2.destroyed || !swiper2.initialized) {
                return;
              }
              swiper2.emit("orientationchange");
            }
          }
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          win2.addEventListener("resize", swiper2.resize.resizeHandler);
          win2.addEventListener("orientationchange", swiper2.resize.orientationChangeHandler);
        },
        destroy: function destroy() {
          var swiper2 = this;
          win2.removeEventListener("resize", swiper2.resize.resizeHandler);
          win2.removeEventListener("orientationchange", swiper2.resize.orientationChangeHandler);
        }
      }
    };
    var Observer2 = {
      func: win2.MutationObserver || win2.WebkitMutationObserver,
      attach: function attach(target, options) {
        if (options === void 0)
          options = {};
        var swiper2 = this;
        var ObserverFunc = Observer2.func;
        var observer = new ObserverFunc(function(mutations) {
          if (mutations.length === 1) {
            swiper2.emit("observerUpdate", mutations[0]);
            return;
          }
          var observerUpdate = function observerUpdate2() {
            swiper2.emit("observerUpdate", mutations[0]);
          };
          if (win2.requestAnimationFrame) {
            win2.requestAnimationFrame(observerUpdate);
          } else {
            win2.setTimeout(observerUpdate, 0);
          }
        });
        observer.observe(target, {
          attributes: typeof options.attributes === "undefined" ? true : options.attributes,
          childList: typeof options.childList === "undefined" ? true : options.childList,
          characterData: typeof options.characterData === "undefined" ? true : options.characterData
        });
        swiper2.observer.observers.push(observer);
      },
      init: function init() {
        var swiper2 = this;
        if (!Support3.observer || !swiper2.params.observer) {
          return;
        }
        if (swiper2.params.observeParents) {
          var containerParents = swiper2.$el.parents();
          for (var i = 0; i < containerParents.length; i += 1) {
            swiper2.observer.attach(containerParents[i]);
          }
        }
        swiper2.observer.attach(swiper2.$el[0], { childList: swiper2.params.observeSlideChildren });
        swiper2.observer.attach(swiper2.$wrapperEl[0], { attributes: false });
      },
      destroy: function destroy() {
        var swiper2 = this;
        swiper2.observer.observers.forEach(function(observer) {
          observer.disconnect();
        });
        swiper2.observer.observers = [];
      }
    };
    var Observer$12 = {
      name: "observer",
      params: {
        observer: false,
        observeParents: false,
        observeSlideChildren: false
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          observer: {
            init: Observer2.init.bind(swiper2),
            attach: Observer2.attach.bind(swiper2),
            destroy: Observer2.destroy.bind(swiper2),
            observers: []
          }
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          swiper2.observer.init();
        },
        destroy: function destroy() {
          var swiper2 = this;
          swiper2.observer.destroy();
        }
      }
    };
    var Virtual2 = {
      update: function update3(force) {
        var swiper2 = this;
        var ref = swiper2.params;
        var slidesPerView = ref.slidesPerView;
        var slidesPerGroup = ref.slidesPerGroup;
        var centeredSlides = ref.centeredSlides;
        var ref$1 = swiper2.params.virtual;
        var addSlidesBefore = ref$1.addSlidesBefore;
        var addSlidesAfter = ref$1.addSlidesAfter;
        var ref$2 = swiper2.virtual;
        var previousFrom = ref$2.from;
        var previousTo = ref$2.to;
        var slides = ref$2.slides;
        var previousSlidesGrid = ref$2.slidesGrid;
        var renderSlide = ref$2.renderSlide;
        var previousOffset = ref$2.offset;
        swiper2.updateActiveIndex();
        var activeIndex = swiper2.activeIndex || 0;
        var offsetProp;
        if (swiper2.rtlTranslate) {
          offsetProp = "right";
        } else {
          offsetProp = swiper2.isHorizontal() ? "left" : "top";
        }
        var slidesAfter;
        var slidesBefore;
        if (centeredSlides) {
          slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
          slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
        } else {
          slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
          slidesBefore = slidesPerGroup + addSlidesAfter;
        }
        var from = Math.max((activeIndex || 0) - slidesBefore, 0);
        var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
        var offset3 = (swiper2.slidesGrid[from] || 0) - (swiper2.slidesGrid[0] || 0);
        Utils2.extend(swiper2.virtual, {
          from,
          to,
          offset: offset3,
          slidesGrid: swiper2.slidesGrid
        });
        function onRendered() {
          swiper2.updateSlides();
          swiper2.updateProgress();
          swiper2.updateSlidesClasses();
          if (swiper2.lazy && swiper2.params.lazy.enabled) {
            swiper2.lazy.load();
          }
        }
        if (previousFrom === from && previousTo === to && !force) {
          if (swiper2.slidesGrid !== previousSlidesGrid && offset3 !== previousOffset) {
            swiper2.slides.css(offsetProp, offset3 + "px");
          }
          swiper2.updateProgress();
          return;
        }
        if (swiper2.params.virtual.renderExternal) {
          swiper2.params.virtual.renderExternal.call(swiper2, {
            offset: offset3,
            from,
            to,
            slides: function getSlides() {
              var slidesToRender = [];
              for (var i2 = from; i2 <= to; i2 += 1) {
                slidesToRender.push(slides[i2]);
              }
              return slidesToRender;
            }()
          });
          onRendered();
          return;
        }
        var prependIndexes = [];
        var appendIndexes = [];
        if (force) {
          swiper2.$wrapperEl.find("." + swiper2.params.slideClass).remove();
        } else {
          for (var i = previousFrom; i <= previousTo; i += 1) {
            if (i < from || i > to) {
              swiper2.$wrapperEl.find("." + swiper2.params.slideClass + '[data-swiper-slide-index="' + i + '"]').remove();
            }
          }
        }
        for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
          if (i$1 >= from && i$1 <= to) {
            if (typeof previousTo === "undefined" || force) {
              appendIndexes.push(i$1);
            } else {
              if (i$1 > previousTo) {
                appendIndexes.push(i$1);
              }
              if (i$1 < previousFrom) {
                prependIndexes.push(i$1);
              }
            }
          }
        }
        appendIndexes.forEach(function(index3) {
          swiper2.$wrapperEl.append(renderSlide(slides[index3], index3));
        });
        prependIndexes.sort(function(a, b) {
          return b - a;
        }).forEach(function(index3) {
          swiper2.$wrapperEl.prepend(renderSlide(slides[index3], index3));
        });
        swiper2.$wrapperEl.children(".swiper-slide").css(offsetProp, offset3 + "px");
        onRendered();
      },
      renderSlide: function renderSlide(slide3, index3) {
        var swiper2 = this;
        var params = swiper2.params.virtual;
        if (params.cache && swiper2.virtual.cache[index3]) {
          return swiper2.virtual.cache[index3];
        }
        var $slideEl = params.renderSlide ? $2(params.renderSlide.call(swiper2, slide3, index3)) : $2('<div class="' + swiper2.params.slideClass + '" data-swiper-slide-index="' + index3 + '">' + slide3 + "</div>");
        if (!$slideEl.attr("data-swiper-slide-index")) {
          $slideEl.attr("data-swiper-slide-index", index3);
        }
        if (params.cache) {
          swiper2.virtual.cache[index3] = $slideEl;
        }
        return $slideEl;
      },
      appendSlide: function appendSlide3(slides) {
        var swiper2 = this;
        if (typeof slides === "object" && "length" in slides) {
          for (var i = 0; i < slides.length; i += 1) {
            if (slides[i]) {
              swiper2.virtual.slides.push(slides[i]);
            }
          }
        } else {
          swiper2.virtual.slides.push(slides);
        }
        swiper2.virtual.update(true);
      },
      prependSlide: function prependSlide3(slides) {
        var swiper2 = this;
        var activeIndex = swiper2.activeIndex;
        var newActiveIndex = activeIndex + 1;
        var numberOfNewSlides = 1;
        if (Array.isArray(slides)) {
          for (var i = 0; i < slides.length; i += 1) {
            if (slides[i]) {
              swiper2.virtual.slides.unshift(slides[i]);
            }
          }
          newActiveIndex = activeIndex + slides.length;
          numberOfNewSlides = slides.length;
        } else {
          swiper2.virtual.slides.unshift(slides);
        }
        if (swiper2.params.virtual.cache) {
          var cache = swiper2.virtual.cache;
          var newCache = {};
          Object.keys(cache).forEach(function(cachedIndex) {
            newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex];
          });
          swiper2.virtual.cache = newCache;
        }
        swiper2.virtual.update(true);
        swiper2.slideTo(newActiveIndex, 0);
      },
      removeSlide: function removeSlide3(slidesIndexes) {
        var swiper2 = this;
        if (typeof slidesIndexes === "undefined" || slidesIndexes === null) {
          return;
        }
        var activeIndex = swiper2.activeIndex;
        if (Array.isArray(slidesIndexes)) {
          for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
            swiper2.virtual.slides.splice(slidesIndexes[i], 1);
            if (swiper2.params.virtual.cache) {
              delete swiper2.virtual.cache[slidesIndexes[i]];
            }
            if (slidesIndexes[i] < activeIndex) {
              activeIndex -= 1;
            }
            activeIndex = Math.max(activeIndex, 0);
          }
        } else {
          swiper2.virtual.slides.splice(slidesIndexes, 1);
          if (swiper2.params.virtual.cache) {
            delete swiper2.virtual.cache[slidesIndexes];
          }
          if (slidesIndexes < activeIndex) {
            activeIndex -= 1;
          }
          activeIndex = Math.max(activeIndex, 0);
        }
        swiper2.virtual.update(true);
        swiper2.slideTo(activeIndex, 0);
      },
      removeAllSlides: function removeAllSlides3() {
        var swiper2 = this;
        swiper2.virtual.slides = [];
        if (swiper2.params.virtual.cache) {
          swiper2.virtual.cache = {};
        }
        swiper2.virtual.update(true);
        swiper2.slideTo(0, 0);
      }
    };
    var Virtual$12 = {
      name: "virtual",
      params: {
        virtual: {
          enabled: false,
          slides: [],
          cache: true,
          renderSlide: null,
          renderExternal: null,
          addSlidesBefore: 0,
          addSlidesAfter: 0
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          virtual: {
            update: Virtual2.update.bind(swiper2),
            appendSlide: Virtual2.appendSlide.bind(swiper2),
            prependSlide: Virtual2.prependSlide.bind(swiper2),
            removeSlide: Virtual2.removeSlide.bind(swiper2),
            removeAllSlides: Virtual2.removeAllSlides.bind(swiper2),
            renderSlide: Virtual2.renderSlide.bind(swiper2),
            slides: swiper2.params.virtual.slides,
            cache: {}
          }
        });
      },
      on: {
        beforeInit: function beforeInit() {
          var swiper2 = this;
          if (!swiper2.params.virtual.enabled) {
            return;
          }
          swiper2.classNames.push(swiper2.params.containerModifierClass + "virtual");
          var overwriteParams = {
            watchSlidesProgress: true
          };
          Utils2.extend(swiper2.params, overwriteParams);
          Utils2.extend(swiper2.originalParams, overwriteParams);
          if (!swiper2.params.initialSlide) {
            swiper2.virtual.update();
          }
        },
        setTranslate: function setTranslate3() {
          var swiper2 = this;
          if (!swiper2.params.virtual.enabled) {
            return;
          }
          swiper2.virtual.update();
        }
      }
    };
    var Keyboard2 = {
      handle: function handle(event) {
        var swiper2 = this;
        var rtl = swiper2.rtlTranslate;
        var e = event;
        if (e.originalEvent) {
          e = e.originalEvent;
        }
        var kc = e.keyCode || e.charCode;
        if (!swiper2.allowSlideNext && (swiper2.isHorizontal() && kc === 39 || swiper2.isVertical() && kc === 40 || kc === 34)) {
          return false;
        }
        if (!swiper2.allowSlidePrev && (swiper2.isHorizontal() && kc === 37 || swiper2.isVertical() && kc === 38 || kc === 33)) {
          return false;
        }
        if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
          return void 0;
        }
        if (doc2.activeElement && doc2.activeElement.nodeName && (doc2.activeElement.nodeName.toLowerCase() === "input" || doc2.activeElement.nodeName.toLowerCase() === "textarea")) {
          return void 0;
        }
        if (swiper2.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
          var inView = false;
          if (swiper2.$el.parents("." + swiper2.params.slideClass).length > 0 && swiper2.$el.parents("." + swiper2.params.slideActiveClass).length === 0) {
            return void 0;
          }
          var windowWidth = win2.innerWidth;
          var windowHeight = win2.innerHeight;
          var swiperOffset = swiper2.$el.offset();
          if (rtl) {
            swiperOffset.left -= swiper2.$el[0].scrollLeft;
          }
          var swiperCoord = [
            [swiperOffset.left, swiperOffset.top],
            [swiperOffset.left + swiper2.width, swiperOffset.top],
            [swiperOffset.left, swiperOffset.top + swiper2.height],
            [swiperOffset.left + swiper2.width, swiperOffset.top + swiper2.height]
          ];
          for (var i = 0; i < swiperCoord.length; i += 1) {
            var point = swiperCoord[i];
            if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
              inView = true;
            }
          }
          if (!inView) {
            return void 0;
          }
        }
        if (swiper2.isHorizontal()) {
          if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {
            if (e.preventDefault) {
              e.preventDefault();
            } else {
              e.returnValue = false;
            }
          }
          if ((kc === 34 || kc === 39) && !rtl || (kc === 33 || kc === 37) && rtl) {
            swiper2.slideNext();
          }
          if ((kc === 33 || kc === 37) && !rtl || (kc === 34 || kc === 39) && rtl) {
            swiper2.slidePrev();
          }
        } else {
          if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {
            if (e.preventDefault) {
              e.preventDefault();
            } else {
              e.returnValue = false;
            }
          }
          if (kc === 34 || kc === 40) {
            swiper2.slideNext();
          }
          if (kc === 33 || kc === 38) {
            swiper2.slidePrev();
          }
        }
        swiper2.emit("keyPress", kc);
        return void 0;
      },
      enable: function enable() {
        var swiper2 = this;
        if (swiper2.keyboard.enabled) {
          return;
        }
        $2(doc2).on("keydown", swiper2.keyboard.handle);
        swiper2.keyboard.enabled = true;
      },
      disable: function disable() {
        var swiper2 = this;
        if (!swiper2.keyboard.enabled) {
          return;
        }
        $2(doc2).off("keydown", swiper2.keyboard.handle);
        swiper2.keyboard.enabled = false;
      }
    };
    var Keyboard$12 = {
      name: "keyboard",
      params: {
        keyboard: {
          enabled: false,
          onlyInViewport: true
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          keyboard: {
            enabled: false,
            enable: Keyboard2.enable.bind(swiper2),
            disable: Keyboard2.disable.bind(swiper2),
            handle: Keyboard2.handle.bind(swiper2)
          }
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          if (swiper2.params.keyboard.enabled) {
            swiper2.keyboard.enable();
          }
        },
        destroy: function destroy() {
          var swiper2 = this;
          if (swiper2.keyboard.enabled) {
            swiper2.keyboard.disable();
          }
        }
      }
    };
    function isEventSupported2() {
      var eventName = "onwheel";
      var isSupported = eventName in doc2;
      if (!isSupported) {
        var element = doc2.createElement("div");
        element.setAttribute(eventName, "return;");
        isSupported = typeof element[eventName] === "function";
      }
      if (!isSupported && doc2.implementation && doc2.implementation.hasFeature && doc2.implementation.hasFeature("", "") !== true) {
        isSupported = doc2.implementation.hasFeature("Events.wheel", "3.0");
      }
      return isSupported;
    }
    var Mousewheel2 = {
      lastScrollTime: Utils2.now(),
      event: function getEvent2() {
        if (win2.navigator.userAgent.indexOf("firefox") > -1) {
          return "DOMMouseScroll";
        }
        return isEventSupported2() ? "wheel" : "mousewheel";
      }(),
      normalize: function normalize(e) {
        var PIXEL_STEP = 10;
        var LINE_HEIGHT = 40;
        var PAGE_HEIGHT = 800;
        var sX = 0;
        var sY = 0;
        var pX = 0;
        var pY = 0;
        if ("detail" in e) {
          sY = e.detail;
        }
        if ("wheelDelta" in e) {
          sY = -e.wheelDelta / 120;
        }
        if ("wheelDeltaY" in e) {
          sY = -e.wheelDeltaY / 120;
        }
        if ("wheelDeltaX" in e) {
          sX = -e.wheelDeltaX / 120;
        }
        if ("axis" in e && e.axis === e.HORIZONTAL_AXIS) {
          sX = sY;
          sY = 0;
        }
        pX = sX * PIXEL_STEP;
        pY = sY * PIXEL_STEP;
        if ("deltaY" in e) {
          pY = e.deltaY;
        }
        if ("deltaX" in e) {
          pX = e.deltaX;
        }
        if ((pX || pY) && e.deltaMode) {
          if (e.deltaMode === 1) {
            pX *= LINE_HEIGHT;
            pY *= LINE_HEIGHT;
          } else {
            pX *= PAGE_HEIGHT;
            pY *= PAGE_HEIGHT;
          }
        }
        if (pX && !sX) {
          sX = pX < 1 ? -1 : 1;
        }
        if (pY && !sY) {
          sY = pY < 1 ? -1 : 1;
        }
        return {
          spinX: sX,
          spinY: sY,
          pixelX: pX,
          pixelY: pY
        };
      },
      handleMouseEnter: function handleMouseEnter() {
        var swiper2 = this;
        swiper2.mouseEntered = true;
      },
      handleMouseLeave: function handleMouseLeave() {
        var swiper2 = this;
        swiper2.mouseEntered = false;
      },
      handle: function handle(event) {
        var e = event;
        var swiper2 = this;
        var params = swiper2.params.mousewheel;
        if (!swiper2.mouseEntered && !params.releaseOnEdges) {
          return true;
        }
        if (e.originalEvent) {
          e = e.originalEvent;
        }
        var delta = 0;
        var rtlFactor = swiper2.rtlTranslate ? -1 : 1;
        var data3 = Mousewheel2.normalize(e);
        if (params.forceToAxis) {
          if (swiper2.isHorizontal()) {
            if (Math.abs(data3.pixelX) > Math.abs(data3.pixelY)) {
              delta = data3.pixelX * rtlFactor;
            } else {
              return true;
            }
          } else if (Math.abs(data3.pixelY) > Math.abs(data3.pixelX)) {
            delta = data3.pixelY;
          } else {
            return true;
          }
        } else {
          delta = Math.abs(data3.pixelX) > Math.abs(data3.pixelY) ? -data3.pixelX * rtlFactor : -data3.pixelY;
        }
        if (delta === 0) {
          return true;
        }
        if (params.invert) {
          delta = -delta;
        }
        if (!swiper2.params.freeMode) {
          if (Utils2.now() - swiper2.mousewheel.lastScrollTime > 60) {
            if (delta < 0) {
              if ((!swiper2.isEnd || swiper2.params.loop) && !swiper2.animating) {
                swiper2.slideNext();
                swiper2.emit("scroll", e);
              } else if (params.releaseOnEdges) {
                return true;
              }
            } else if ((!swiper2.isBeginning || swiper2.params.loop) && !swiper2.animating) {
              swiper2.slidePrev();
              swiper2.emit("scroll", e);
            } else if (params.releaseOnEdges) {
              return true;
            }
          }
          swiper2.mousewheel.lastScrollTime = new win2.Date().getTime();
        } else {
          if (swiper2.params.loop) {
            swiper2.loopFix();
          }
          var position = swiper2.getTranslate() + delta * params.sensitivity;
          var wasBeginning = swiper2.isBeginning;
          var wasEnd = swiper2.isEnd;
          if (position >= swiper2.minTranslate()) {
            position = swiper2.minTranslate();
          }
          if (position <= swiper2.maxTranslate()) {
            position = swiper2.maxTranslate();
          }
          swiper2.setTransition(0);
          swiper2.setTranslate(position);
          swiper2.updateProgress();
          swiper2.updateActiveIndex();
          swiper2.updateSlidesClasses();
          if (!wasBeginning && swiper2.isBeginning || !wasEnd && swiper2.isEnd) {
            swiper2.updateSlidesClasses();
          }
          if (swiper2.params.freeModeSticky) {
            clearTimeout(swiper2.mousewheel.timeout);
            swiper2.mousewheel.timeout = Utils2.nextTick(function() {
              swiper2.slideToClosest();
            }, 300);
          }
          swiper2.emit("scroll", e);
          if (swiper2.params.autoplay && swiper2.params.autoplayDisableOnInteraction) {
            swiper2.autoplay.stop();
          }
          if (position === swiper2.minTranslate() || position === swiper2.maxTranslate()) {
            return true;
          }
        }
        if (e.preventDefault) {
          e.preventDefault();
        } else {
          e.returnValue = false;
        }
        return false;
      },
      enable: function enable() {
        var swiper2 = this;
        if (!Mousewheel2.event) {
          return false;
        }
        if (swiper2.mousewheel.enabled) {
          return false;
        }
        var target = swiper2.$el;
        if (swiper2.params.mousewheel.eventsTarged !== "container") {
          target = $2(swiper2.params.mousewheel.eventsTarged);
        }
        target.on("mouseenter", swiper2.mousewheel.handleMouseEnter);
        target.on("mouseleave", swiper2.mousewheel.handleMouseLeave);
        target.on(Mousewheel2.event, swiper2.mousewheel.handle);
        swiper2.mousewheel.enabled = true;
        return true;
      },
      disable: function disable() {
        var swiper2 = this;
        if (!Mousewheel2.event) {
          return false;
        }
        if (!swiper2.mousewheel.enabled) {
          return false;
        }
        var target = swiper2.$el;
        if (swiper2.params.mousewheel.eventsTarged !== "container") {
          target = $2(swiper2.params.mousewheel.eventsTarged);
        }
        target.off(Mousewheel2.event, swiper2.mousewheel.handle);
        swiper2.mousewheel.enabled = false;
        return true;
      }
    };
    var Mousewheel$12 = {
      name: "mousewheel",
      params: {
        mousewheel: {
          enabled: false,
          releaseOnEdges: false,
          invert: false,
          forceToAxis: false,
          sensitivity: 1,
          eventsTarged: "container"
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          mousewheel: {
            enabled: false,
            enable: Mousewheel2.enable.bind(swiper2),
            disable: Mousewheel2.disable.bind(swiper2),
            handle: Mousewheel2.handle.bind(swiper2),
            handleMouseEnter: Mousewheel2.handleMouseEnter.bind(swiper2),
            handleMouseLeave: Mousewheel2.handleMouseLeave.bind(swiper2),
            lastScrollTime: Utils2.now()
          }
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          if (swiper2.params.mousewheel.enabled) {
            swiper2.mousewheel.enable();
          }
        },
        destroy: function destroy() {
          var swiper2 = this;
          if (swiper2.mousewheel.enabled) {
            swiper2.mousewheel.disable();
          }
        }
      }
    };
    var Navigation2 = {
      update: function update3() {
        var swiper2 = this;
        var params = swiper2.params.navigation;
        if (swiper2.params.loop) {
          return;
        }
        var ref = swiper2.navigation;
        var $nextEl = ref.$nextEl;
        var $prevEl = ref.$prevEl;
        if ($prevEl && $prevEl.length > 0) {
          if (swiper2.isBeginning) {
            $prevEl.addClass(params.disabledClass);
          } else {
            $prevEl.removeClass(params.disabledClass);
          }
          $prevEl[swiper2.params.watchOverflow && swiper2.isLocked ? "addClass" : "removeClass"](params.lockClass);
        }
        if ($nextEl && $nextEl.length > 0) {
          if (swiper2.isEnd) {
            $nextEl.addClass(params.disabledClass);
          } else {
            $nextEl.removeClass(params.disabledClass);
          }
          $nextEl[swiper2.params.watchOverflow && swiper2.isLocked ? "addClass" : "removeClass"](params.lockClass);
        }
      },
      onPrevClick: function onPrevClick(e) {
        var swiper2 = this;
        e.preventDefault();
        if (swiper2.isBeginning && !swiper2.params.loop) {
          return;
        }
        swiper2.slidePrev();
      },
      onNextClick: function onNextClick(e) {
        var swiper2 = this;
        e.preventDefault();
        if (swiper2.isEnd && !swiper2.params.loop) {
          return;
        }
        swiper2.slideNext();
      },
      init: function init() {
        var swiper2 = this;
        var params = swiper2.params.navigation;
        if (!(params.nextEl || params.prevEl)) {
          return;
        }
        var $nextEl;
        var $prevEl;
        if (params.nextEl) {
          $nextEl = $2(params.nextEl);
          if (swiper2.params.uniqueNavElements && typeof params.nextEl === "string" && $nextEl.length > 1 && swiper2.$el.find(params.nextEl).length === 1) {
            $nextEl = swiper2.$el.find(params.nextEl);
          }
        }
        if (params.prevEl) {
          $prevEl = $2(params.prevEl);
          if (swiper2.params.uniqueNavElements && typeof params.prevEl === "string" && $prevEl.length > 1 && swiper2.$el.find(params.prevEl).length === 1) {
            $prevEl = swiper2.$el.find(params.prevEl);
          }
        }
        if ($nextEl && $nextEl.length > 0) {
          $nextEl.on("click", swiper2.navigation.onNextClick);
        }
        if ($prevEl && $prevEl.length > 0) {
          $prevEl.on("click", swiper2.navigation.onPrevClick);
        }
        Utils2.extend(swiper2.navigation, {
          $nextEl,
          nextEl: $nextEl && $nextEl[0],
          $prevEl,
          prevEl: $prevEl && $prevEl[0]
        });
      },
      destroy: function destroy() {
        var swiper2 = this;
        var ref = swiper2.navigation;
        var $nextEl = ref.$nextEl;
        var $prevEl = ref.$prevEl;
        if ($nextEl && $nextEl.length) {
          $nextEl.off("click", swiper2.navigation.onNextClick);
          $nextEl.removeClass(swiper2.params.navigation.disabledClass);
        }
        if ($prevEl && $prevEl.length) {
          $prevEl.off("click", swiper2.navigation.onPrevClick);
          $prevEl.removeClass(swiper2.params.navigation.disabledClass);
        }
      }
    };
    var Navigation$12 = {
      name: "navigation",
      params: {
        navigation: {
          nextEl: null,
          prevEl: null,
          hideOnClick: false,
          disabledClass: "swiper-button-disabled",
          hiddenClass: "swiper-button-hidden",
          lockClass: "swiper-button-lock"
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          navigation: {
            init: Navigation2.init.bind(swiper2),
            update: Navigation2.update.bind(swiper2),
            destroy: Navigation2.destroy.bind(swiper2),
            onNextClick: Navigation2.onNextClick.bind(swiper2),
            onPrevClick: Navigation2.onPrevClick.bind(swiper2)
          }
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          swiper2.navigation.init();
          swiper2.navigation.update();
        },
        toEdge: function toEdge() {
          var swiper2 = this;
          swiper2.navigation.update();
        },
        fromEdge: function fromEdge() {
          var swiper2 = this;
          swiper2.navigation.update();
        },
        destroy: function destroy() {
          var swiper2 = this;
          swiper2.navigation.destroy();
        },
        click: function click(e) {
          var swiper2 = this;
          var ref = swiper2.navigation;
          var $nextEl = ref.$nextEl;
          var $prevEl = ref.$prevEl;
          if (swiper2.params.navigation.hideOnClick && !$2(e.target).is($prevEl) && !$2(e.target).is($nextEl)) {
            var isHidden;
            if ($nextEl) {
              isHidden = $nextEl.hasClass(swiper2.params.navigation.hiddenClass);
            } else if ($prevEl) {
              isHidden = $prevEl.hasClass(swiper2.params.navigation.hiddenClass);
            }
            if (isHidden === true) {
              swiper2.emit("navigationShow", swiper2);
            } else {
              swiper2.emit("navigationHide", swiper2);
            }
            if ($nextEl) {
              $nextEl.toggleClass(swiper2.params.navigation.hiddenClass);
            }
            if ($prevEl) {
              $prevEl.toggleClass(swiper2.params.navigation.hiddenClass);
            }
          }
        }
      }
    };
    var Pagination2 = {
      update: function update3() {
        var swiper2 = this;
        var rtl = swiper2.rtl;
        var params = swiper2.params.pagination;
        if (!params.el || !swiper2.pagination.el || !swiper2.pagination.$el || swiper2.pagination.$el.length === 0) {
          return;
        }
        var slidesLength = swiper2.virtual && swiper2.params.virtual.enabled ? swiper2.virtual.slides.length : swiper2.slides.length;
        var $el = swiper2.pagination.$el;
        var current;
        var total = swiper2.params.loop ? Math.ceil((slidesLength - swiper2.loopedSlides * 2) / swiper2.params.slidesPerGroup) : swiper2.snapGrid.length;
        if (swiper2.params.loop) {
          current = Math.ceil((swiper2.activeIndex - swiper2.loopedSlides) / swiper2.params.slidesPerGroup);
          if (current > slidesLength - 1 - swiper2.loopedSlides * 2) {
            current -= slidesLength - swiper2.loopedSlides * 2;
          }
          if (current > total - 1) {
            current -= total;
          }
          if (current < 0 && swiper2.params.paginationType !== "bullets") {
            current = total + current;
          }
        } else if (typeof swiper2.snapIndex !== "undefined") {
          current = swiper2.snapIndex;
        } else {
          current = swiper2.activeIndex || 0;
        }
        if (params.type === "bullets" && swiper2.pagination.bullets && swiper2.pagination.bullets.length > 0) {
          var bullets = swiper2.pagination.bullets;
          var firstIndex;
          var lastIndex;
          var midIndex;
          if (params.dynamicBullets) {
            swiper2.pagination.bulletSize = bullets.eq(0)[swiper2.isHorizontal() ? "outerWidth" : "outerHeight"](true);
            $el.css(swiper2.isHorizontal() ? "width" : "height", swiper2.pagination.bulletSize * (params.dynamicMainBullets + 4) + "px");
            if (params.dynamicMainBullets > 1 && swiper2.previousIndex !== void 0) {
              swiper2.pagination.dynamicBulletIndex += current - swiper2.previousIndex;
              if (swiper2.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {
                swiper2.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
              } else if (swiper2.pagination.dynamicBulletIndex < 0) {
                swiper2.pagination.dynamicBulletIndex = 0;
              }
            }
            firstIndex = current - swiper2.pagination.dynamicBulletIndex;
            lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
            midIndex = (lastIndex + firstIndex) / 2;
          }
          bullets.removeClass(params.bulletActiveClass + " " + params.bulletActiveClass + "-next " + params.bulletActiveClass + "-next-next " + params.bulletActiveClass + "-prev " + params.bulletActiveClass + "-prev-prev " + params.bulletActiveClass + "-main");
          if ($el.length > 1) {
            bullets.each(function(index3, bullet) {
              var $bullet2 = $2(bullet);
              var bulletIndex = $bullet2.index();
              if (bulletIndex === current) {
                $bullet2.addClass(params.bulletActiveClass);
              }
              if (params.dynamicBullets) {
                if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
                  $bullet2.addClass(params.bulletActiveClass + "-main");
                }
                if (bulletIndex === firstIndex) {
                  $bullet2.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
                }
                if (bulletIndex === lastIndex) {
                  $bullet2.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
                }
              }
            });
          } else {
            var $bullet = bullets.eq(current);
            $bullet.addClass(params.bulletActiveClass);
            if (params.dynamicBullets) {
              var $firstDisplayedBullet = bullets.eq(firstIndex);
              var $lastDisplayedBullet = bullets.eq(lastIndex);
              for (var i = firstIndex; i <= lastIndex; i += 1) {
                bullets.eq(i).addClass(params.bulletActiveClass + "-main");
              }
              $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
              $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
            }
          }
          if (params.dynamicBullets) {
            var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
            var bulletsOffset = (swiper2.pagination.bulletSize * dynamicBulletsLength - swiper2.pagination.bulletSize) / 2 - midIndex * swiper2.pagination.bulletSize;
            var offsetProp = rtl ? "right" : "left";
            bullets.css(swiper2.isHorizontal() ? offsetProp : "top", bulletsOffset + "px");
          }
        }
        if (params.type === "fraction") {
          $el.find("." + params.currentClass).text(params.formatFractionCurrent(current + 1));
          $el.find("." + params.totalClass).text(params.formatFractionTotal(total));
        }
        if (params.type === "progressbar") {
          var progressbarDirection;
          if (params.progressbarOpposite) {
            progressbarDirection = swiper2.isHorizontal() ? "vertical" : "horizontal";
          } else {
            progressbarDirection = swiper2.isHorizontal() ? "horizontal" : "vertical";
          }
          var scale = (current + 1) / total;
          var scaleX = 1;
          var scaleY = 1;
          if (progressbarDirection === "horizontal") {
            scaleX = scale;
          } else {
            scaleY = scale;
          }
          $el.find("." + params.progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")").transition(swiper2.params.speed);
        }
        if (params.type === "custom" && params.renderCustom) {
          $el.html(params.renderCustom(swiper2, current + 1, total));
          swiper2.emit("paginationRender", swiper2, $el[0]);
        } else {
          swiper2.emit("paginationUpdate", swiper2, $el[0]);
        }
        $el[swiper2.params.watchOverflow && swiper2.isLocked ? "addClass" : "removeClass"](params.lockClass);
      },
      render: function render2() {
        var swiper2 = this;
        var params = swiper2.params.pagination;
        if (!params.el || !swiper2.pagination.el || !swiper2.pagination.$el || swiper2.pagination.$el.length === 0) {
          return;
        }
        var slidesLength = swiper2.virtual && swiper2.params.virtual.enabled ? swiper2.virtual.slides.length : swiper2.slides.length;
        var $el = swiper2.pagination.$el;
        var paginationHTML = "";
        if (params.type === "bullets") {
          var numberOfBullets = swiper2.params.loop ? Math.ceil((slidesLength - swiper2.loopedSlides * 2) / swiper2.params.slidesPerGroup) : swiper2.snapGrid.length;
          for (var i = 0; i < numberOfBullets; i += 1) {
            if (params.renderBullet) {
              paginationHTML += params.renderBullet.call(swiper2, i, params.bulletClass);
            } else {
              paginationHTML += "<" + params.bulletElement + ' class="' + params.bulletClass + '"></' + params.bulletElement + ">";
            }
          }
          $el.html(paginationHTML);
          swiper2.pagination.bullets = $el.find("." + params.bulletClass);
        }
        if (params.type === "fraction") {
          if (params.renderFraction) {
            paginationHTML = params.renderFraction.call(swiper2, params.currentClass, params.totalClass);
          } else {
            paginationHTML = '<span class="' + params.currentClass + '"></span> / <span class="' + params.totalClass + '"></span>';
          }
          $el.html(paginationHTML);
        }
        if (params.type === "progressbar") {
          if (params.renderProgressbar) {
            paginationHTML = params.renderProgressbar.call(swiper2, params.progressbarFillClass);
          } else {
            paginationHTML = '<span class="' + params.progressbarFillClass + '"></span>';
          }
          $el.html(paginationHTML);
        }
        if (params.type !== "custom") {
          swiper2.emit("paginationRender", swiper2.pagination.$el[0]);
        }
      },
      init: function init() {
        var swiper2 = this;
        var params = swiper2.params.pagination;
        if (!params.el) {
          return;
        }
        var $el = $2(params.el);
        if ($el.length === 0) {
          return;
        }
        if (swiper2.params.uniqueNavElements && typeof params.el === "string" && $el.length > 1 && swiper2.$el.find(params.el).length === 1) {
          $el = swiper2.$el.find(params.el);
        }
        if (params.type === "bullets" && params.clickable) {
          $el.addClass(params.clickableClass);
        }
        $el.addClass(params.modifierClass + params.type);
        if (params.type === "bullets" && params.dynamicBullets) {
          $el.addClass("" + params.modifierClass + params.type + "-dynamic");
          swiper2.pagination.dynamicBulletIndex = 0;
          if (params.dynamicMainBullets < 1) {
            params.dynamicMainBullets = 1;
          }
        }
        if (params.type === "progressbar" && params.progressbarOpposite) {
          $el.addClass(params.progressbarOppositeClass);
        }
        if (params.clickable) {
          $el.on("click", "." + params.bulletClass, function onClick3(e) {
            e.preventDefault();
            var index3 = $2(this).index() * swiper2.params.slidesPerGroup;
            if (swiper2.params.loop) {
              index3 += swiper2.loopedSlides;
            }
            swiper2.slideTo(index3);
          });
        }
        Utils2.extend(swiper2.pagination, {
          $el,
          el: $el[0]
        });
      },
      destroy: function destroy() {
        var swiper2 = this;
        var params = swiper2.params.pagination;
        if (!params.el || !swiper2.pagination.el || !swiper2.pagination.$el || swiper2.pagination.$el.length === 0) {
          return;
        }
        var $el = swiper2.pagination.$el;
        $el.removeClass(params.hiddenClass);
        $el.removeClass(params.modifierClass + params.type);
        if (swiper2.pagination.bullets) {
          swiper2.pagination.bullets.removeClass(params.bulletActiveClass);
        }
        if (params.clickable) {
          $el.off("click", "." + params.bulletClass);
        }
      }
    };
    var Pagination$12 = {
      name: "pagination",
      params: {
        pagination: {
          el: null,
          bulletElement: "span",
          clickable: false,
          hideOnClick: false,
          renderBullet: null,
          renderProgressbar: null,
          renderFraction: null,
          renderCustom: null,
          progressbarOpposite: false,
          type: "bullets",
          // 'bullets' or 'progressbar' or 'fraction' or 'custom'
          dynamicBullets: false,
          dynamicMainBullets: 1,
          formatFractionCurrent: function(number) {
            return number;
          },
          formatFractionTotal: function(number) {
            return number;
          },
          bulletClass: "swiper-pagination-bullet",
          bulletActiveClass: "swiper-pagination-bullet-active",
          modifierClass: "swiper-pagination-",
          // NEW
          currentClass: "swiper-pagination-current",
          totalClass: "swiper-pagination-total",
          hiddenClass: "swiper-pagination-hidden",
          progressbarFillClass: "swiper-pagination-progressbar-fill",
          progressbarOppositeClass: "swiper-pagination-progressbar-opposite",
          clickableClass: "swiper-pagination-clickable",
          // NEW
          lockClass: "swiper-pagination-lock"
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          pagination: {
            init: Pagination2.init.bind(swiper2),
            render: Pagination2.render.bind(swiper2),
            update: Pagination2.update.bind(swiper2),
            destroy: Pagination2.destroy.bind(swiper2),
            dynamicBulletIndex: 0
          }
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          swiper2.pagination.init();
          swiper2.pagination.render();
          swiper2.pagination.update();
        },
        activeIndexChange: function activeIndexChange() {
          var swiper2 = this;
          if (swiper2.params.loop) {
            swiper2.pagination.update();
          } else if (typeof swiper2.snapIndex === "undefined") {
            swiper2.pagination.update();
          }
        },
        snapIndexChange: function snapIndexChange() {
          var swiper2 = this;
          if (!swiper2.params.loop) {
            swiper2.pagination.update();
          }
        },
        slidesLengthChange: function slidesLengthChange() {
          var swiper2 = this;
          if (swiper2.params.loop) {
            swiper2.pagination.render();
            swiper2.pagination.update();
          }
        },
        snapGridLengthChange: function snapGridLengthChange() {
          var swiper2 = this;
          if (!swiper2.params.loop) {
            swiper2.pagination.render();
            swiper2.pagination.update();
          }
        },
        destroy: function destroy() {
          var swiper2 = this;
          swiper2.pagination.destroy();
        },
        click: function click(e) {
          var swiper2 = this;
          if (swiper2.params.pagination.el && swiper2.params.pagination.hideOnClick && swiper2.pagination.$el.length > 0 && !$2(e.target).hasClass(swiper2.params.pagination.bulletClass)) {
            var isHidden = swiper2.pagination.$el.hasClass(swiper2.params.pagination.hiddenClass);
            if (isHidden === true) {
              swiper2.emit("paginationShow", swiper2);
            } else {
              swiper2.emit("paginationHide", swiper2);
            }
            swiper2.pagination.$el.toggleClass(swiper2.params.pagination.hiddenClass);
          }
        }
      }
    };
    var Scrollbar2 = {
      setTranslate: function setTranslate3() {
        var swiper2 = this;
        if (!swiper2.params.scrollbar.el || !swiper2.scrollbar.el) {
          return;
        }
        var scrollbar = swiper2.scrollbar;
        var rtl = swiper2.rtlTranslate;
        var progress = swiper2.progress;
        var dragSize = scrollbar.dragSize;
        var trackSize = scrollbar.trackSize;
        var $dragEl = scrollbar.$dragEl;
        var $el = scrollbar.$el;
        var params = swiper2.params.scrollbar;
        var newSize = dragSize;
        var newPos = (trackSize - dragSize) * progress;
        if (rtl) {
          newPos = -newPos;
          if (newPos > 0) {
            newSize = dragSize - newPos;
            newPos = 0;
          } else if (-newPos + dragSize > trackSize) {
            newSize = trackSize + newPos;
          }
        } else if (newPos < 0) {
          newSize = dragSize + newPos;
          newPos = 0;
        } else if (newPos + dragSize > trackSize) {
          newSize = trackSize - newPos;
        }
        if (swiper2.isHorizontal()) {
          if (Support3.transforms3d) {
            $dragEl.transform("translate3d(" + newPos + "px, 0, 0)");
          } else {
            $dragEl.transform("translateX(" + newPos + "px)");
          }
          $dragEl[0].style.width = newSize + "px";
        } else {
          if (Support3.transforms3d) {
            $dragEl.transform("translate3d(0px, " + newPos + "px, 0)");
          } else {
            $dragEl.transform("translateY(" + newPos + "px)");
          }
          $dragEl[0].style.height = newSize + "px";
        }
        if (params.hide) {
          clearTimeout(swiper2.scrollbar.timeout);
          $el[0].style.opacity = 1;
          swiper2.scrollbar.timeout = setTimeout(function() {
            $el[0].style.opacity = 0;
            $el.transition(400);
          }, 1e3);
        }
      },
      setTransition: function setTransition3(duration) {
        var swiper2 = this;
        if (!swiper2.params.scrollbar.el || !swiper2.scrollbar.el) {
          return;
        }
        swiper2.scrollbar.$dragEl.transition(duration);
      },
      updateSize: function updateSize3() {
        var swiper2 = this;
        if (!swiper2.params.scrollbar.el || !swiper2.scrollbar.el) {
          return;
        }
        var scrollbar = swiper2.scrollbar;
        var $dragEl = scrollbar.$dragEl;
        var $el = scrollbar.$el;
        $dragEl[0].style.width = "";
        $dragEl[0].style.height = "";
        var trackSize = swiper2.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
        var divider = swiper2.size / swiper2.virtualSize;
        var moveDivider = divider * (trackSize / swiper2.size);
        var dragSize;
        if (swiper2.params.scrollbar.dragSize === "auto") {
          dragSize = trackSize * divider;
        } else {
          dragSize = parseInt(swiper2.params.scrollbar.dragSize, 10);
        }
        if (swiper2.isHorizontal()) {
          $dragEl[0].style.width = dragSize + "px";
        } else {
          $dragEl[0].style.height = dragSize + "px";
        }
        if (divider >= 1) {
          $el[0].style.display = "none";
        } else {
          $el[0].style.display = "";
        }
        if (swiper2.params.scrollbar.hide) {
          $el[0].style.opacity = 0;
        }
        Utils2.extend(scrollbar, {
          trackSize,
          divider,
          moveDivider,
          dragSize
        });
        scrollbar.$el[swiper2.params.watchOverflow && swiper2.isLocked ? "addClass" : "removeClass"](swiper2.params.scrollbar.lockClass);
      },
      getPointerPosition: function getPointerPosition(e) {
        var swiper2 = this;
        if (swiper2.isHorizontal()) {
          return e.type === "touchstart" || e.type === "touchmove" ? e.targetTouches[0].pageX : e.pageX || e.clientX;
        }
        return e.type === "touchstart" || e.type === "touchmove" ? e.targetTouches[0].pageY : e.pageY || e.clientY;
      },
      setDragPosition: function setDragPosition(e) {
        var swiper2 = this;
        var scrollbar = swiper2.scrollbar;
        var rtl = swiper2.rtlTranslate;
        var $el = scrollbar.$el;
        var dragSize = scrollbar.dragSize;
        var trackSize = scrollbar.trackSize;
        var dragStartPos = scrollbar.dragStartPos;
        var positionRatio;
        positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper2.isHorizontal() ? "left" : "top"] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
        positionRatio = Math.max(Math.min(positionRatio, 1), 0);
        if (rtl) {
          positionRatio = 1 - positionRatio;
        }
        var position = swiper2.minTranslate() + (swiper2.maxTranslate() - swiper2.minTranslate()) * positionRatio;
        swiper2.updateProgress(position);
        swiper2.setTranslate(position);
        swiper2.updateActiveIndex();
        swiper2.updateSlidesClasses();
      },
      onDragStart: function onDragStart(e) {
        var swiper2 = this;
        var params = swiper2.params.scrollbar;
        var scrollbar = swiper2.scrollbar;
        var $wrapperEl = swiper2.$wrapperEl;
        var $el = scrollbar.$el;
        var $dragEl = scrollbar.$dragEl;
        swiper2.scrollbar.isTouched = true;
        swiper2.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper2.isHorizontal() ? "left" : "top"] : null;
        e.preventDefault();
        e.stopPropagation();
        $wrapperEl.transition(100);
        $dragEl.transition(100);
        scrollbar.setDragPosition(e);
        clearTimeout(swiper2.scrollbar.dragTimeout);
        $el.transition(0);
        if (params.hide) {
          $el.css("opacity", 1);
        }
        swiper2.emit("scrollbarDragStart", e);
      },
      onDragMove: function onDragMove(e) {
        var swiper2 = this;
        var scrollbar = swiper2.scrollbar;
        var $wrapperEl = swiper2.$wrapperEl;
        var $el = scrollbar.$el;
        var $dragEl = scrollbar.$dragEl;
        if (!swiper2.scrollbar.isTouched) {
          return;
        }
        if (e.preventDefault) {
          e.preventDefault();
        } else {
          e.returnValue = false;
        }
        scrollbar.setDragPosition(e);
        $wrapperEl.transition(0);
        $el.transition(0);
        $dragEl.transition(0);
        swiper2.emit("scrollbarDragMove", e);
      },
      onDragEnd: function onDragEnd(e) {
        var swiper2 = this;
        var params = swiper2.params.scrollbar;
        var scrollbar = swiper2.scrollbar;
        var $el = scrollbar.$el;
        if (!swiper2.scrollbar.isTouched) {
          return;
        }
        swiper2.scrollbar.isTouched = false;
        if (params.hide) {
          clearTimeout(swiper2.scrollbar.dragTimeout);
          swiper2.scrollbar.dragTimeout = Utils2.nextTick(function() {
            $el.css("opacity", 0);
            $el.transition(400);
          }, 1e3);
        }
        swiper2.emit("scrollbarDragEnd", e);
        if (params.snapOnRelease) {
          swiper2.slideToClosest();
        }
      },
      enableDraggable: function enableDraggable() {
        var swiper2 = this;
        if (!swiper2.params.scrollbar.el) {
          return;
        }
        var scrollbar = swiper2.scrollbar;
        var touchEventsTouch = swiper2.touchEventsTouch;
        var touchEventsDesktop = swiper2.touchEventsDesktop;
        var params = swiper2.params;
        var $el = scrollbar.$el;
        var target = $el[0];
        var activeListener = Support3.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
        var passiveListener = Support3.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
        if (!Support3.touch) {
          target.addEventListener(touchEventsDesktop.start, swiper2.scrollbar.onDragStart, activeListener);
          doc2.addEventListener(touchEventsDesktop.move, swiper2.scrollbar.onDragMove, activeListener);
          doc2.addEventListener(touchEventsDesktop.end, swiper2.scrollbar.onDragEnd, passiveListener);
        } else {
          target.addEventListener(touchEventsTouch.start, swiper2.scrollbar.onDragStart, activeListener);
          target.addEventListener(touchEventsTouch.move, swiper2.scrollbar.onDragMove, activeListener);
          target.addEventListener(touchEventsTouch.end, swiper2.scrollbar.onDragEnd, passiveListener);
        }
      },
      disableDraggable: function disableDraggable() {
        var swiper2 = this;
        if (!swiper2.params.scrollbar.el) {
          return;
        }
        var scrollbar = swiper2.scrollbar;
        var touchEventsTouch = swiper2.touchEventsTouch;
        var touchEventsDesktop = swiper2.touchEventsDesktop;
        var params = swiper2.params;
        var $el = scrollbar.$el;
        var target = $el[0];
        var activeListener = Support3.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
        var passiveListener = Support3.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
        if (!Support3.touch) {
          target.removeEventListener(touchEventsDesktop.start, swiper2.scrollbar.onDragStart, activeListener);
          doc2.removeEventListener(touchEventsDesktop.move, swiper2.scrollbar.onDragMove, activeListener);
          doc2.removeEventListener(touchEventsDesktop.end, swiper2.scrollbar.onDragEnd, passiveListener);
        } else {
          target.removeEventListener(touchEventsTouch.start, swiper2.scrollbar.onDragStart, activeListener);
          target.removeEventListener(touchEventsTouch.move, swiper2.scrollbar.onDragMove, activeListener);
          target.removeEventListener(touchEventsTouch.end, swiper2.scrollbar.onDragEnd, passiveListener);
        }
      },
      init: function init() {
        var swiper2 = this;
        if (!swiper2.params.scrollbar.el) {
          return;
        }
        var scrollbar = swiper2.scrollbar;
        var $swiperEl = swiper2.$el;
        var params = swiper2.params.scrollbar;
        var $el = $2(params.el);
        if (swiper2.params.uniqueNavElements && typeof params.el === "string" && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
          $el = $swiperEl.find(params.el);
        }
        var $dragEl = $el.find("." + swiper2.params.scrollbar.dragClass);
        if ($dragEl.length === 0) {
          $dragEl = $2('<div class="' + swiper2.params.scrollbar.dragClass + '"></div>');
          $el.append($dragEl);
        }
        Utils2.extend(scrollbar, {
          $el,
          el: $el[0],
          $dragEl,
          dragEl: $dragEl[0]
        });
        if (params.draggable) {
          scrollbar.enableDraggable();
        }
      },
      destroy: function destroy() {
        var swiper2 = this;
        swiper2.scrollbar.disableDraggable();
      }
    };
    var Scrollbar$12 = {
      name: "scrollbar",
      params: {
        scrollbar: {
          el: null,
          dragSize: "auto",
          hide: false,
          draggable: false,
          snapOnRelease: true,
          lockClass: "swiper-scrollbar-lock",
          dragClass: "swiper-scrollbar-drag"
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          scrollbar: {
            init: Scrollbar2.init.bind(swiper2),
            destroy: Scrollbar2.destroy.bind(swiper2),
            updateSize: Scrollbar2.updateSize.bind(swiper2),
            setTranslate: Scrollbar2.setTranslate.bind(swiper2),
            setTransition: Scrollbar2.setTransition.bind(swiper2),
            enableDraggable: Scrollbar2.enableDraggable.bind(swiper2),
            disableDraggable: Scrollbar2.disableDraggable.bind(swiper2),
            setDragPosition: Scrollbar2.setDragPosition.bind(swiper2),
            getPointerPosition: Scrollbar2.getPointerPosition.bind(swiper2),
            onDragStart: Scrollbar2.onDragStart.bind(swiper2),
            onDragMove: Scrollbar2.onDragMove.bind(swiper2),
            onDragEnd: Scrollbar2.onDragEnd.bind(swiper2),
            isTouched: false,
            timeout: null,
            dragTimeout: null
          }
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          swiper2.scrollbar.init();
          swiper2.scrollbar.updateSize();
          swiper2.scrollbar.setTranslate();
        },
        update: function update3() {
          var swiper2 = this;
          swiper2.scrollbar.updateSize();
        },
        resize: function resize() {
          var swiper2 = this;
          swiper2.scrollbar.updateSize();
        },
        observerUpdate: function observerUpdate() {
          var swiper2 = this;
          swiper2.scrollbar.updateSize();
        },
        setTranslate: function setTranslate3() {
          var swiper2 = this;
          swiper2.scrollbar.setTranslate();
        },
        setTransition: function setTransition3(duration) {
          var swiper2 = this;
          swiper2.scrollbar.setTransition(duration);
        },
        destroy: function destroy() {
          var swiper2 = this;
          swiper2.scrollbar.destroy();
        }
      }
    };
    var Parallax2 = {
      setTransform: function setTransform(el, progress) {
        var swiper2 = this;
        var rtl = swiper2.rtl;
        var $el = $2(el);
        var rtlFactor = rtl ? -1 : 1;
        var p = $el.attr("data-swiper-parallax") || "0";
        var x = $el.attr("data-swiper-parallax-x");
        var y = $el.attr("data-swiper-parallax-y");
        var scale = $el.attr("data-swiper-parallax-scale");
        var opacity = $el.attr("data-swiper-parallax-opacity");
        if (x || y) {
          x = x || "0";
          y = y || "0";
        } else if (swiper2.isHorizontal()) {
          x = p;
          y = "0";
        } else {
          y = p;
          x = "0";
        }
        if (x.indexOf("%") >= 0) {
          x = parseInt(x, 10) * progress * rtlFactor + "%";
        } else {
          x = x * progress * rtlFactor + "px";
        }
        if (y.indexOf("%") >= 0) {
          y = parseInt(y, 10) * progress + "%";
        } else {
          y = y * progress + "px";
        }
        if (typeof opacity !== "undefined" && opacity !== null) {
          var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
          $el[0].style.opacity = currentOpacity;
        }
        if (typeof scale === "undefined" || scale === null) {
          $el.transform("translate3d(" + x + ", " + y + ", 0px)");
        } else {
          var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
          $el.transform("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")");
        }
      },
      setTranslate: function setTranslate3() {
        var swiper2 = this;
        var $el = swiper2.$el;
        var slides = swiper2.slides;
        var progress = swiper2.progress;
        var snapGrid = swiper2.snapGrid;
        $el.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function(index3, el) {
          swiper2.parallax.setTransform(el, progress);
        });
        slides.each(function(slideIndex, slideEl) {
          var slideProgress = slideEl.progress;
          if (swiper2.params.slidesPerGroup > 1 && swiper2.params.slidesPerView !== "auto") {
            slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
          }
          slideProgress = Math.min(Math.max(slideProgress, -1), 1);
          $2(slideEl).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function(index3, el) {
            swiper2.parallax.setTransform(el, slideProgress);
          });
        });
      },
      setTransition: function setTransition3(duration) {
        if (duration === void 0)
          duration = this.params.speed;
        var swiper2 = this;
        var $el = swiper2.$el;
        $el.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function(index3, parallaxEl) {
          var $parallaxEl = $2(parallaxEl);
          var parallaxDuration = parseInt($parallaxEl.attr("data-swiper-parallax-duration"), 10) || duration;
          if (duration === 0) {
            parallaxDuration = 0;
          }
          $parallaxEl.transition(parallaxDuration);
        });
      }
    };
    var Parallax$12 = {
      name: "parallax",
      params: {
        parallax: {
          enabled: false
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          parallax: {
            setTransform: Parallax2.setTransform.bind(swiper2),
            setTranslate: Parallax2.setTranslate.bind(swiper2),
            setTransition: Parallax2.setTransition.bind(swiper2)
          }
        });
      },
      on: {
        beforeInit: function beforeInit() {
          var swiper2 = this;
          if (!swiper2.params.parallax.enabled) {
            return;
          }
          swiper2.params.watchSlidesProgress = true;
          swiper2.originalParams.watchSlidesProgress = true;
        },
        init: function init() {
          var swiper2 = this;
          if (!swiper2.params.parallax.enabled) {
            return;
          }
          swiper2.parallax.setTranslate();
        },
        setTranslate: function setTranslate3() {
          var swiper2 = this;
          if (!swiper2.params.parallax.enabled) {
            return;
          }
          swiper2.parallax.setTranslate();
        },
        setTransition: function setTransition3(duration) {
          var swiper2 = this;
          if (!swiper2.params.parallax.enabled) {
            return;
          }
          swiper2.parallax.setTransition(duration);
        }
      }
    };
    var Zoom2 = {
      // Calc Scale From Multi-touches
      getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
        if (e.targetTouches.length < 2) {
          return 1;
        }
        var x1 = e.targetTouches[0].pageX;
        var y1 = e.targetTouches[0].pageY;
        var x2 = e.targetTouches[1].pageX;
        var y2 = e.targetTouches[1].pageY;
        var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
        return distance;
      },
      // Events
      onGestureStart: function onGestureStart(e) {
        var swiper2 = this;
        var params = swiper2.params.zoom;
        var zoom = swiper2.zoom;
        var gesture = zoom.gesture;
        zoom.fakeGestureTouched = false;
        zoom.fakeGestureMoved = false;
        if (!Support3.gestures) {
          if (e.type !== "touchstart" || e.type === "touchstart" && e.targetTouches.length < 2) {
            return;
          }
          zoom.fakeGestureTouched = true;
          gesture.scaleStart = Zoom2.getDistanceBetweenTouches(e);
        }
        if (!gesture.$slideEl || !gesture.$slideEl.length) {
          gesture.$slideEl = $2(e.target).closest(".swiper-slide");
          if (gesture.$slideEl.length === 0) {
            gesture.$slideEl = swiper2.slides.eq(swiper2.activeIndex);
          }
          gesture.$imageEl = gesture.$slideEl.find("img, svg, canvas");
          gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
          gesture.maxRatio = gesture.$imageWrapEl.attr("data-swiper-zoom") || params.maxRatio;
          if (gesture.$imageWrapEl.length === 0) {
            gesture.$imageEl = void 0;
            return;
          }
        }
        gesture.$imageEl.transition(0);
        swiper2.zoom.isScaling = true;
      },
      onGestureChange: function onGestureChange(e) {
        var swiper2 = this;
        var params = swiper2.params.zoom;
        var zoom = swiper2.zoom;
        var gesture = zoom.gesture;
        if (!Support3.gestures) {
          if (e.type !== "touchmove" || e.type === "touchmove" && e.targetTouches.length < 2) {
            return;
          }
          zoom.fakeGestureMoved = true;
          gesture.scaleMove = Zoom2.getDistanceBetweenTouches(e);
        }
        if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
          return;
        }
        if (Support3.gestures) {
          zoom.scale = e.scale * zoom.currentScale;
        } else {
          zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;
        }
        if (zoom.scale > gesture.maxRatio) {
          zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);
        }
        if (zoom.scale < params.minRatio) {
          zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);
        }
        gesture.$imageEl.transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
      },
      onGestureEnd: function onGestureEnd(e) {
        var swiper2 = this;
        var params = swiper2.params.zoom;
        var zoom = swiper2.zoom;
        var gesture = zoom.gesture;
        if (!Support3.gestures) {
          if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
            return;
          }
          if (e.type !== "touchend" || e.type === "touchend" && e.changedTouches.length < 2 && !Device3.android) {
            return;
          }
          zoom.fakeGestureTouched = false;
          zoom.fakeGestureMoved = false;
        }
        if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
          return;
        }
        zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
        gesture.$imageEl.transition(swiper2.params.speed).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
        zoom.currentScale = zoom.scale;
        zoom.isScaling = false;
        if (zoom.scale === 1) {
          gesture.$slideEl = void 0;
        }
      },
      onTouchStart: function onTouchStart3(e) {
        var swiper2 = this;
        var zoom = swiper2.zoom;
        var gesture = zoom.gesture;
        var image = zoom.image;
        if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
          return;
        }
        if (image.isTouched) {
          return;
        }
        if (Device3.android) {
          e.preventDefault();
        }
        image.isTouched = true;
        image.touchesStart.x = e.type === "touchstart" ? e.targetTouches[0].pageX : e.pageX;
        image.touchesStart.y = e.type === "touchstart" ? e.targetTouches[0].pageY : e.pageY;
      },
      onTouchMove: function onTouchMove3(e) {
        var swiper2 = this;
        var zoom = swiper2.zoom;
        var gesture = zoom.gesture;
        var image = zoom.image;
        var velocity = zoom.velocity;
        if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
          return;
        }
        swiper2.allowClick = false;
        if (!image.isTouched || !gesture.$slideEl) {
          return;
        }
        if (!image.isMoved) {
          image.width = gesture.$imageEl[0].offsetWidth;
          image.height = gesture.$imageEl[0].offsetHeight;
          image.startX = Utils2.getTranslate(gesture.$imageWrapEl[0], "x") || 0;
          image.startY = Utils2.getTranslate(gesture.$imageWrapEl[0], "y") || 0;
          gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
          gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
          gesture.$imageWrapEl.transition(0);
          if (swiper2.rtl) {
            image.startX = -image.startX;
            image.startY = -image.startY;
          }
        }
        var scaledWidth = image.width * zoom.scale;
        var scaledHeight = image.height * zoom.scale;
        if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) {
          return;
        }
        image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
        image.maxX = -image.minX;
        image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
        image.maxY = -image.minY;
        image.touchesCurrent.x = e.type === "touchmove" ? e.targetTouches[0].pageX : e.pageX;
        image.touchesCurrent.y = e.type === "touchmove" ? e.targetTouches[0].pageY : e.pageY;
        if (!image.isMoved && !zoom.isScaling) {
          if (swiper2.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
            image.isTouched = false;
            return;
          }
          if (!swiper2.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
            image.isTouched = false;
            return;
          }
        }
        e.preventDefault();
        e.stopPropagation();
        image.isMoved = true;
        image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
        image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
        if (image.currentX < image.minX) {
          image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);
        }
        if (image.currentX > image.maxX) {
          image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);
        }
        if (image.currentY < image.minY) {
          image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);
        }
        if (image.currentY > image.maxY) {
          image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);
        }
        if (!velocity.prevPositionX) {
          velocity.prevPositionX = image.touchesCurrent.x;
        }
        if (!velocity.prevPositionY) {
          velocity.prevPositionY = image.touchesCurrent.y;
        }
        if (!velocity.prevTime) {
          velocity.prevTime = Date.now();
        }
        velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
        velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
        if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) {
          velocity.x = 0;
        }
        if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) {
          velocity.y = 0;
        }
        velocity.prevPositionX = image.touchesCurrent.x;
        velocity.prevPositionY = image.touchesCurrent.y;
        velocity.prevTime = Date.now();
        gesture.$imageWrapEl.transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
      },
      onTouchEnd: function onTouchEnd3() {
        var swiper2 = this;
        var zoom = swiper2.zoom;
        var gesture = zoom.gesture;
        var image = zoom.image;
        var velocity = zoom.velocity;
        if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
          return;
        }
        if (!image.isTouched || !image.isMoved) {
          image.isTouched = false;
          image.isMoved = false;
          return;
        }
        image.isTouched = false;
        image.isMoved = false;
        var momentumDurationX = 300;
        var momentumDurationY = 300;
        var momentumDistanceX = velocity.x * momentumDurationX;
        var newPositionX = image.currentX + momentumDistanceX;
        var momentumDistanceY = velocity.y * momentumDurationY;
        var newPositionY = image.currentY + momentumDistanceY;
        if (velocity.x !== 0) {
          momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
        }
        if (velocity.y !== 0) {
          momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
        }
        var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
        image.currentX = newPositionX;
        image.currentY = newPositionY;
        var scaledWidth = image.width * zoom.scale;
        var scaledHeight = image.height * zoom.scale;
        image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
        image.maxX = -image.minX;
        image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
        image.maxY = -image.minY;
        image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
        image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
        gesture.$imageWrapEl.transition(momentumDuration).transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
      },
      onTransitionEnd: function onTransitionEnd() {
        var swiper2 = this;
        var zoom = swiper2.zoom;
        var gesture = zoom.gesture;
        if (gesture.$slideEl && swiper2.previousIndex !== swiper2.activeIndex) {
          gesture.$imageEl.transform("translate3d(0,0,0) scale(1)");
          gesture.$imageWrapEl.transform("translate3d(0,0,0)");
          zoom.scale = 1;
          zoom.currentScale = 1;
          gesture.$slideEl = void 0;
          gesture.$imageEl = void 0;
          gesture.$imageWrapEl = void 0;
        }
      },
      // Toggle Zoom
      toggle: function toggle(e) {
        var swiper2 = this;
        var zoom = swiper2.zoom;
        if (zoom.scale && zoom.scale !== 1) {
          zoom.out();
        } else {
          zoom.in(e);
        }
      },
      in: function in$1(e) {
        var swiper2 = this;
        var zoom = swiper2.zoom;
        var params = swiper2.params.zoom;
        var gesture = zoom.gesture;
        var image = zoom.image;
        if (!gesture.$slideEl) {
          gesture.$slideEl = swiper2.clickedSlide ? $2(swiper2.clickedSlide) : swiper2.slides.eq(swiper2.activeIndex);
          gesture.$imageEl = gesture.$slideEl.find("img, svg, canvas");
          gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
        }
        if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
          return;
        }
        gesture.$slideEl.addClass("" + params.zoomedSlideClass);
        var touchX;
        var touchY;
        var offsetX;
        var offsetY;
        var diffX;
        var diffY;
        var translateX;
        var translateY;
        var imageWidth;
        var imageHeight;
        var scaledWidth;
        var scaledHeight;
        var translateMinX;
        var translateMinY;
        var translateMaxX;
        var translateMaxY;
        var slideWidth;
        var slideHeight;
        if (typeof image.touchesStart.x === "undefined" && e) {
          touchX = e.type === "touchend" ? e.changedTouches[0].pageX : e.pageX;
          touchY = e.type === "touchend" ? e.changedTouches[0].pageY : e.pageY;
        } else {
          touchX = image.touchesStart.x;
          touchY = image.touchesStart.y;
        }
        zoom.scale = gesture.$imageWrapEl.attr("data-swiper-zoom") || params.maxRatio;
        zoom.currentScale = gesture.$imageWrapEl.attr("data-swiper-zoom") || params.maxRatio;
        if (e) {
          slideWidth = gesture.$slideEl[0].offsetWidth;
          slideHeight = gesture.$slideEl[0].offsetHeight;
          offsetX = gesture.$slideEl.offset().left;
          offsetY = gesture.$slideEl.offset().top;
          diffX = offsetX + slideWidth / 2 - touchX;
          diffY = offsetY + slideHeight / 2 - touchY;
          imageWidth = gesture.$imageEl[0].offsetWidth;
          imageHeight = gesture.$imageEl[0].offsetHeight;
          scaledWidth = imageWidth * zoom.scale;
          scaledHeight = imageHeight * zoom.scale;
          translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
          translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
          translateMaxX = -translateMinX;
          translateMaxY = -translateMinY;
          translateX = diffX * zoom.scale;
          translateY = diffY * zoom.scale;
          if (translateX < translateMinX) {
            translateX = translateMinX;
          }
          if (translateX > translateMaxX) {
            translateX = translateMaxX;
          }
          if (translateY < translateMinY) {
            translateY = translateMinY;
          }
          if (translateY > translateMaxY) {
            translateY = translateMaxY;
          }
        } else {
          translateX = 0;
          translateY = 0;
        }
        gesture.$imageWrapEl.transition(300).transform("translate3d(" + translateX + "px, " + translateY + "px,0)");
        gesture.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
      },
      out: function out() {
        var swiper2 = this;
        var zoom = swiper2.zoom;
        var params = swiper2.params.zoom;
        var gesture = zoom.gesture;
        if (!gesture.$slideEl) {
          gesture.$slideEl = swiper2.clickedSlide ? $2(swiper2.clickedSlide) : swiper2.slides.eq(swiper2.activeIndex);
          gesture.$imageEl = gesture.$slideEl.find("img, svg, canvas");
          gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
        }
        if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
          return;
        }
        zoom.scale = 1;
        zoom.currentScale = 1;
        gesture.$imageWrapEl.transition(300).transform("translate3d(0,0,0)");
        gesture.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)");
        gesture.$slideEl.removeClass("" + params.zoomedSlideClass);
        gesture.$slideEl = void 0;
      },
      // Attach/Detach Events
      enable: function enable() {
        var swiper2 = this;
        var zoom = swiper2.zoom;
        if (zoom.enabled) {
          return;
        }
        zoom.enabled = true;
        var passiveListener = swiper2.touchEvents.start === "touchstart" && Support3.passiveListener && swiper2.params.passiveListeners ? { passive: true, capture: false } : false;
        if (Support3.gestures) {
          swiper2.$wrapperEl.on("gesturestart", ".swiper-slide", zoom.onGestureStart, passiveListener);
          swiper2.$wrapperEl.on("gesturechange", ".swiper-slide", zoom.onGestureChange, passiveListener);
          swiper2.$wrapperEl.on("gestureend", ".swiper-slide", zoom.onGestureEnd, passiveListener);
        } else if (swiper2.touchEvents.start === "touchstart") {
          swiper2.$wrapperEl.on(swiper2.touchEvents.start, ".swiper-slide", zoom.onGestureStart, passiveListener);
          swiper2.$wrapperEl.on(swiper2.touchEvents.move, ".swiper-slide", zoom.onGestureChange, passiveListener);
          swiper2.$wrapperEl.on(swiper2.touchEvents.end, ".swiper-slide", zoom.onGestureEnd, passiveListener);
        }
        swiper2.$wrapperEl.on(swiper2.touchEvents.move, "." + swiper2.params.zoom.containerClass, zoom.onTouchMove);
      },
      disable: function disable() {
        var swiper2 = this;
        var zoom = swiper2.zoom;
        if (!zoom.enabled) {
          return;
        }
        swiper2.zoom.enabled = false;
        var passiveListener = swiper2.touchEvents.start === "touchstart" && Support3.passiveListener && swiper2.params.passiveListeners ? { passive: true, capture: false } : false;
        if (Support3.gestures) {
          swiper2.$wrapperEl.off("gesturestart", ".swiper-slide", zoom.onGestureStart, passiveListener);
          swiper2.$wrapperEl.off("gesturechange", ".swiper-slide", zoom.onGestureChange, passiveListener);
          swiper2.$wrapperEl.off("gestureend", ".swiper-slide", zoom.onGestureEnd, passiveListener);
        } else if (swiper2.touchEvents.start === "touchstart") {
          swiper2.$wrapperEl.off(swiper2.touchEvents.start, ".swiper-slide", zoom.onGestureStart, passiveListener);
          swiper2.$wrapperEl.off(swiper2.touchEvents.move, ".swiper-slide", zoom.onGestureChange, passiveListener);
          swiper2.$wrapperEl.off(swiper2.touchEvents.end, ".swiper-slide", zoom.onGestureEnd, passiveListener);
        }
        swiper2.$wrapperEl.off(swiper2.touchEvents.move, "." + swiper2.params.zoom.containerClass, zoom.onTouchMove);
      }
    };
    var Zoom$12 = {
      name: "zoom",
      params: {
        zoom: {
          enabled: false,
          maxRatio: 3,
          minRatio: 1,
          toggle: true,
          containerClass: "swiper-zoom-container",
          zoomedSlideClass: "swiper-slide-zoomed"
        }
      },
      create: function create() {
        var swiper2 = this;
        var zoom = {
          enabled: false,
          scale: 1,
          currentScale: 1,
          isScaling: false,
          gesture: {
            $slideEl: void 0,
            slideWidth: void 0,
            slideHeight: void 0,
            $imageEl: void 0,
            $imageWrapEl: void 0,
            maxRatio: 3
          },
          image: {
            isTouched: void 0,
            isMoved: void 0,
            currentX: void 0,
            currentY: void 0,
            minX: void 0,
            minY: void 0,
            maxX: void 0,
            maxY: void 0,
            width: void 0,
            height: void 0,
            startX: void 0,
            startY: void 0,
            touchesStart: {},
            touchesCurrent: {}
          },
          velocity: {
            x: void 0,
            y: void 0,
            prevPositionX: void 0,
            prevPositionY: void 0,
            prevTime: void 0
          }
        };
        "onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out".split(" ").forEach(function(methodName) {
          zoom[methodName] = Zoom2[methodName].bind(swiper2);
        });
        Utils2.extend(swiper2, {
          zoom
        });
        var scale = 1;
        Object.defineProperty(swiper2.zoom, "scale", {
          get: function get2() {
            return scale;
          },
          set: function set(value) {
            if (scale !== value) {
              var imageEl = swiper2.zoom.gesture.$imageEl ? swiper2.zoom.gesture.$imageEl[0] : void 0;
              var slideEl = swiper2.zoom.gesture.$slideEl ? swiper2.zoom.gesture.$slideEl[0] : void 0;
              swiper2.emit("zoomChange", value, imageEl, slideEl);
            }
            scale = value;
          }
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          if (swiper2.params.zoom.enabled) {
            swiper2.zoom.enable();
          }
        },
        destroy: function destroy() {
          var swiper2 = this;
          swiper2.zoom.disable();
        },
        touchStart: function touchStart(e) {
          var swiper2 = this;
          if (!swiper2.zoom.enabled) {
            return;
          }
          swiper2.zoom.onTouchStart(e);
        },
        touchEnd: function touchEnd(e) {
          var swiper2 = this;
          if (!swiper2.zoom.enabled) {
            return;
          }
          swiper2.zoom.onTouchEnd(e);
        },
        doubleTap: function doubleTap(e) {
          var swiper2 = this;
          if (swiper2.params.zoom.enabled && swiper2.zoom.enabled && swiper2.params.zoom.toggle) {
            swiper2.zoom.toggle(e);
          }
        },
        transitionEnd: function transitionEnd3() {
          var swiper2 = this;
          if (swiper2.zoom.enabled && swiper2.params.zoom.enabled) {
            swiper2.zoom.onTransitionEnd();
          }
        }
      }
    };
    var Lazy2 = {
      loadInSlide: function loadInSlide(index3, loadInDuplicate) {
        if (loadInDuplicate === void 0)
          loadInDuplicate = true;
        var swiper2 = this;
        var params = swiper2.params.lazy;
        if (typeof index3 === "undefined") {
          return;
        }
        if (swiper2.slides.length === 0) {
          return;
        }
        var isVirtual = swiper2.virtual && swiper2.params.virtual.enabled;
        var $slideEl = isVirtual ? swiper2.$wrapperEl.children("." + swiper2.params.slideClass + '[data-swiper-slide-index="' + index3 + '"]') : swiper2.slides.eq(index3);
        var $images = $slideEl.find("." + params.elementClass + ":not(." + params.loadedClass + "):not(." + params.loadingClass + ")");
        if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
          $images = $images.add($slideEl[0]);
        }
        if ($images.length === 0) {
          return;
        }
        $images.each(function(imageIndex, imageEl) {
          var $imageEl = $2(imageEl);
          $imageEl.addClass(params.loadingClass);
          var background = $imageEl.attr("data-background");
          var src = $imageEl.attr("data-src");
          var srcset = $imageEl.attr("data-srcset");
          var sizes = $imageEl.attr("data-sizes");
          swiper2.loadImage($imageEl[0], src || background, srcset, sizes, false, function() {
            if (typeof swiper2 === "undefined" || swiper2 === null || !swiper2 || swiper2 && !swiper2.params || swiper2.destroyed) {
              return;
            }
            if (background) {
              $imageEl.css("background-image", 'url("' + background + '")');
              $imageEl.removeAttr("data-background");
            } else {
              if (srcset) {
                $imageEl.attr("srcset", srcset);
                $imageEl.removeAttr("data-srcset");
              }
              if (sizes) {
                $imageEl.attr("sizes", sizes);
                $imageEl.removeAttr("data-sizes");
              }
              if (src) {
                $imageEl.attr("src", src);
                $imageEl.removeAttr("data-src");
              }
            }
            $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
            $slideEl.find("." + params.preloaderClass).remove();
            if (swiper2.params.loop && loadInDuplicate) {
              var slideOriginalIndex = $slideEl.attr("data-swiper-slide-index");
              if ($slideEl.hasClass(swiper2.params.slideDuplicateClass)) {
                var originalSlide = swiper2.$wrapperEl.children('[data-swiper-slide-index="' + slideOriginalIndex + '"]:not(.' + swiper2.params.slideDuplicateClass + ")");
                swiper2.lazy.loadInSlide(originalSlide.index(), false);
              } else {
                var duplicatedSlide = swiper2.$wrapperEl.children("." + swiper2.params.slideDuplicateClass + '[data-swiper-slide-index="' + slideOriginalIndex + '"]');
                swiper2.lazy.loadInSlide(duplicatedSlide.index(), false);
              }
            }
            swiper2.emit("lazyImageReady", $slideEl[0], $imageEl[0]);
          });
          swiper2.emit("lazyImageLoad", $slideEl[0], $imageEl[0]);
        });
      },
      load: function load() {
        var swiper2 = this;
        var $wrapperEl = swiper2.$wrapperEl;
        var swiperParams = swiper2.params;
        var slides = swiper2.slides;
        var activeIndex = swiper2.activeIndex;
        var isVirtual = swiper2.virtual && swiperParams.virtual.enabled;
        var params = swiperParams.lazy;
        var slidesPerView = swiperParams.slidesPerView;
        if (slidesPerView === "auto") {
          slidesPerView = 0;
        }
        function slideExist(index3) {
          if (isVirtual) {
            if ($wrapperEl.children("." + swiperParams.slideClass + '[data-swiper-slide-index="' + index3 + '"]').length) {
              return true;
            }
          } else if (slides[index3]) {
            return true;
          }
          return false;
        }
        function slideIndex(slideEl) {
          if (isVirtual) {
            return $2(slideEl).attr("data-swiper-slide-index");
          }
          return $2(slideEl).index();
        }
        if (!swiper2.lazy.initialImageLoaded) {
          swiper2.lazy.initialImageLoaded = true;
        }
        if (swiper2.params.watchSlidesVisibility) {
          $wrapperEl.children("." + swiperParams.slideVisibleClass).each(function(elIndex, slideEl) {
            var index3 = isVirtual ? $2(slideEl).attr("data-swiper-slide-index") : $2(slideEl).index();
            swiper2.lazy.loadInSlide(index3);
          });
        } else if (slidesPerView > 1) {
          for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
            if (slideExist(i)) {
              swiper2.lazy.loadInSlide(i);
            }
          }
        } else {
          swiper2.lazy.loadInSlide(activeIndex);
        }
        if (params.loadPrevNext) {
          if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
            var amount = params.loadPrevNextAmount;
            var spv = slidesPerView;
            var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
            var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
            for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {
              if (slideExist(i$1)) {
                swiper2.lazy.loadInSlide(i$1);
              }
            }
            for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {
              if (slideExist(i$2)) {
                swiper2.lazy.loadInSlide(i$2);
              }
            }
          } else {
            var nextSlide = $wrapperEl.children("." + swiperParams.slideNextClass);
            if (nextSlide.length > 0) {
              swiper2.lazy.loadInSlide(slideIndex(nextSlide));
            }
            var prevSlide = $wrapperEl.children("." + swiperParams.slidePrevClass);
            if (prevSlide.length > 0) {
              swiper2.lazy.loadInSlide(slideIndex(prevSlide));
            }
          }
        }
      }
    };
    var Lazy$12 = {
      name: "lazy",
      params: {
        lazy: {
          enabled: false,
          loadPrevNext: false,
          loadPrevNextAmount: 1,
          loadOnTransitionStart: false,
          elementClass: "swiper-lazy",
          loadingClass: "swiper-lazy-loading",
          loadedClass: "swiper-lazy-loaded",
          preloaderClass: "swiper-lazy-preloader"
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          lazy: {
            initialImageLoaded: false,
            load: Lazy2.load.bind(swiper2),
            loadInSlide: Lazy2.loadInSlide.bind(swiper2)
          }
        });
      },
      on: {
        beforeInit: function beforeInit() {
          var swiper2 = this;
          if (swiper2.params.lazy.enabled && swiper2.params.preloadImages) {
            swiper2.params.preloadImages = false;
          }
        },
        init: function init() {
          var swiper2 = this;
          if (swiper2.params.lazy.enabled && !swiper2.params.loop && swiper2.params.initialSlide === 0) {
            swiper2.lazy.load();
          }
        },
        scroll: function scroll() {
          var swiper2 = this;
          if (swiper2.params.freeMode && !swiper2.params.freeModeSticky) {
            swiper2.lazy.load();
          }
        },
        resize: function resize() {
          var swiper2 = this;
          if (swiper2.params.lazy.enabled) {
            swiper2.lazy.load();
          }
        },
        scrollbarDragMove: function scrollbarDragMove() {
          var swiper2 = this;
          if (swiper2.params.lazy.enabled) {
            swiper2.lazy.load();
          }
        },
        transitionStart: function transitionStart3() {
          var swiper2 = this;
          if (swiper2.params.lazy.enabled) {
            if (swiper2.params.lazy.loadOnTransitionStart || !swiper2.params.lazy.loadOnTransitionStart && !swiper2.lazy.initialImageLoaded) {
              swiper2.lazy.load();
            }
          }
        },
        transitionEnd: function transitionEnd3() {
          var swiper2 = this;
          if (swiper2.params.lazy.enabled && !swiper2.params.lazy.loadOnTransitionStart) {
            swiper2.lazy.load();
          }
        }
      }
    };
    var Controller2 = {
      LinearSpline: function LinearSpline2(x, y) {
        var binarySearch = function search() {
          var maxIndex;
          var minIndex;
          var guess;
          return function(array, val) {
            minIndex = -1;
            maxIndex = array.length;
            while (maxIndex - minIndex > 1) {
              guess = maxIndex + minIndex >> 1;
              if (array[guess] <= val) {
                minIndex = guess;
              } else {
                maxIndex = guess;
              }
            }
            return maxIndex;
          };
        }();
        this.x = x;
        this.y = y;
        this.lastIndex = x.length - 1;
        var i1;
        var i3;
        this.interpolate = function interpolate(x2) {
          if (!x2) {
            return 0;
          }
          i3 = binarySearch(this.x, x2);
          i1 = i3 - 1;
          return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
        };
        return this;
      },
      // xxx: for now i will just save one spline function to to
      getInterpolateFunction: function getInterpolateFunction(c) {
        var swiper2 = this;
        if (!swiper2.controller.spline) {
          swiper2.controller.spline = swiper2.params.loop ? new Controller2.LinearSpline(swiper2.slidesGrid, c.slidesGrid) : new Controller2.LinearSpline(swiper2.snapGrid, c.snapGrid);
        }
      },
      setTranslate: function setTranslate3(setTranslate$1, byController) {
        var swiper2 = this;
        var controlled = swiper2.controller.control;
        var multiplier;
        var controlledTranslate;
        function setControlledTranslate(c) {
          var translate3 = swiper2.rtlTranslate ? -swiper2.translate : swiper2.translate;
          if (swiper2.params.controller.by === "slide") {
            swiper2.controller.getInterpolateFunction(c);
            controlledTranslate = -swiper2.controller.spline.interpolate(-translate3);
          }
          if (!controlledTranslate || swiper2.params.controller.by === "container") {
            multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper2.maxTranslate() - swiper2.minTranslate());
            controlledTranslate = (translate3 - swiper2.minTranslate()) * multiplier + c.minTranslate();
          }
          if (swiper2.params.controller.inverse) {
            controlledTranslate = c.maxTranslate() - controlledTranslate;
          }
          c.updateProgress(controlledTranslate);
          c.setTranslate(controlledTranslate, swiper2);
          c.updateActiveIndex();
          c.updateSlidesClasses();
        }
        if (Array.isArray(controlled)) {
          for (var i = 0; i < controlled.length; i += 1) {
            if (controlled[i] !== byController && controlled[i] instanceof Swiper2) {
              setControlledTranslate(controlled[i]);
            }
          }
        } else if (controlled instanceof Swiper2 && byController !== controlled) {
          setControlledTranslate(controlled);
        }
      },
      setTransition: function setTransition3(duration, byController) {
        var swiper2 = this;
        var controlled = swiper2.controller.control;
        var i;
        function setControlledTransition(c) {
          c.setTransition(duration, swiper2);
          if (duration !== 0) {
            c.transitionStart();
            if (c.params.autoHeight) {
              Utils2.nextTick(function() {
                c.updateAutoHeight();
              });
            }
            c.$wrapperEl.transitionEnd(function() {
              if (!controlled) {
                return;
              }
              if (c.params.loop && swiper2.params.controller.by === "slide") {
                c.loopFix();
              }
              c.transitionEnd();
            });
          }
        }
        if (Array.isArray(controlled)) {
          for (i = 0; i < controlled.length; i += 1) {
            if (controlled[i] !== byController && controlled[i] instanceof Swiper2) {
              setControlledTransition(controlled[i]);
            }
          }
        } else if (controlled instanceof Swiper2 && byController !== controlled) {
          setControlledTransition(controlled);
        }
      }
    };
    var Controller$12 = {
      name: "controller",
      params: {
        controller: {
          control: void 0,
          inverse: false,
          by: "slide"
          // or 'container'
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          controller: {
            control: swiper2.params.controller.control,
            getInterpolateFunction: Controller2.getInterpolateFunction.bind(swiper2),
            setTranslate: Controller2.setTranslate.bind(swiper2),
            setTransition: Controller2.setTransition.bind(swiper2)
          }
        });
      },
      on: {
        update: function update3() {
          var swiper2 = this;
          if (!swiper2.controller.control) {
            return;
          }
          if (swiper2.controller.spline) {
            swiper2.controller.spline = void 0;
            delete swiper2.controller.spline;
          }
        },
        resize: function resize() {
          var swiper2 = this;
          if (!swiper2.controller.control) {
            return;
          }
          if (swiper2.controller.spline) {
            swiper2.controller.spline = void 0;
            delete swiper2.controller.spline;
          }
        },
        observerUpdate: function observerUpdate() {
          var swiper2 = this;
          if (!swiper2.controller.control) {
            return;
          }
          if (swiper2.controller.spline) {
            swiper2.controller.spline = void 0;
            delete swiper2.controller.spline;
          }
        },
        setTranslate: function setTranslate3(translate3, byController) {
          var swiper2 = this;
          if (!swiper2.controller.control) {
            return;
          }
          swiper2.controller.setTranslate(translate3, byController);
        },
        setTransition: function setTransition3(duration, byController) {
          var swiper2 = this;
          if (!swiper2.controller.control) {
            return;
          }
          swiper2.controller.setTransition(duration, byController);
        }
      }
    };
    var a11y2 = {
      makeElFocusable: function makeElFocusable($el) {
        $el.attr("tabIndex", "0");
        return $el;
      },
      addElRole: function addElRole($el, role) {
        $el.attr("role", role);
        return $el;
      },
      addElLabel: function addElLabel($el, label) {
        $el.attr("aria-label", label);
        return $el;
      },
      disableEl: function disableEl($el) {
        $el.attr("aria-disabled", true);
        return $el;
      },
      enableEl: function enableEl($el) {
        $el.attr("aria-disabled", false);
        return $el;
      },
      onEnterKey: function onEnterKey(e) {
        var swiper2 = this;
        var params = swiper2.params.a11y;
        if (e.keyCode !== 13) {
          return;
        }
        var $targetEl = $2(e.target);
        if (swiper2.navigation && swiper2.navigation.$nextEl && $targetEl.is(swiper2.navigation.$nextEl)) {
          if (!(swiper2.isEnd && !swiper2.params.loop)) {
            swiper2.slideNext();
          }
          if (swiper2.isEnd) {
            swiper2.a11y.notify(params.lastSlideMessage);
          } else {
            swiper2.a11y.notify(params.nextSlideMessage);
          }
        }
        if (swiper2.navigation && swiper2.navigation.$prevEl && $targetEl.is(swiper2.navigation.$prevEl)) {
          if (!(swiper2.isBeginning && !swiper2.params.loop)) {
            swiper2.slidePrev();
          }
          if (swiper2.isBeginning) {
            swiper2.a11y.notify(params.firstSlideMessage);
          } else {
            swiper2.a11y.notify(params.prevSlideMessage);
          }
        }
        if (swiper2.pagination && $targetEl.is("." + swiper2.params.pagination.bulletClass)) {
          $targetEl[0].click();
        }
      },
      notify: function notify(message) {
        var swiper2 = this;
        var notification = swiper2.a11y.liveRegion;
        if (notification.length === 0) {
          return;
        }
        notification.html("");
        notification.html(message);
      },
      updateNavigation: function updateNavigation() {
        var swiper2 = this;
        if (swiper2.params.loop) {
          return;
        }
        var ref = swiper2.navigation;
        var $nextEl = ref.$nextEl;
        var $prevEl = ref.$prevEl;
        if ($prevEl && $prevEl.length > 0) {
          if (swiper2.isBeginning) {
            swiper2.a11y.disableEl($prevEl);
          } else {
            swiper2.a11y.enableEl($prevEl);
          }
        }
        if ($nextEl && $nextEl.length > 0) {
          if (swiper2.isEnd) {
            swiper2.a11y.disableEl($nextEl);
          } else {
            swiper2.a11y.enableEl($nextEl);
          }
        }
      },
      updatePagination: function updatePagination() {
        var swiper2 = this;
        var params = swiper2.params.a11y;
        if (swiper2.pagination && swiper2.params.pagination.clickable && swiper2.pagination.bullets && swiper2.pagination.bullets.length) {
          swiper2.pagination.bullets.each(function(bulletIndex, bulletEl) {
            var $bulletEl = $2(bulletEl);
            swiper2.a11y.makeElFocusable($bulletEl);
            swiper2.a11y.addElRole($bulletEl, "button");
            swiper2.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));
          });
        }
      },
      init: function init() {
        var swiper2 = this;
        swiper2.$el.append(swiper2.a11y.liveRegion);
        var params = swiper2.params.a11y;
        var $nextEl;
        var $prevEl;
        if (swiper2.navigation && swiper2.navigation.$nextEl) {
          $nextEl = swiper2.navigation.$nextEl;
        }
        if (swiper2.navigation && swiper2.navigation.$prevEl) {
          $prevEl = swiper2.navigation.$prevEl;
        }
        if ($nextEl) {
          swiper2.a11y.makeElFocusable($nextEl);
          swiper2.a11y.addElRole($nextEl, "button");
          swiper2.a11y.addElLabel($nextEl, params.nextSlideMessage);
          $nextEl.on("keydown", swiper2.a11y.onEnterKey);
        }
        if ($prevEl) {
          swiper2.a11y.makeElFocusable($prevEl);
          swiper2.a11y.addElRole($prevEl, "button");
          swiper2.a11y.addElLabel($prevEl, params.prevSlideMessage);
          $prevEl.on("keydown", swiper2.a11y.onEnterKey);
        }
        if (swiper2.pagination && swiper2.params.pagination.clickable && swiper2.pagination.bullets && swiper2.pagination.bullets.length) {
          swiper2.pagination.$el.on("keydown", "." + swiper2.params.pagination.bulletClass, swiper2.a11y.onEnterKey);
        }
      },
      destroy: function destroy() {
        var swiper2 = this;
        if (swiper2.a11y.liveRegion && swiper2.a11y.liveRegion.length > 0) {
          swiper2.a11y.liveRegion.remove();
        }
        var $nextEl;
        var $prevEl;
        if (swiper2.navigation && swiper2.navigation.$nextEl) {
          $nextEl = swiper2.navigation.$nextEl;
        }
        if (swiper2.navigation && swiper2.navigation.$prevEl) {
          $prevEl = swiper2.navigation.$prevEl;
        }
        if ($nextEl) {
          $nextEl.off("keydown", swiper2.a11y.onEnterKey);
        }
        if ($prevEl) {
          $prevEl.off("keydown", swiper2.a11y.onEnterKey);
        }
        if (swiper2.pagination && swiper2.params.pagination.clickable && swiper2.pagination.bullets && swiper2.pagination.bullets.length) {
          swiper2.pagination.$el.off("keydown", "." + swiper2.params.pagination.bulletClass, swiper2.a11y.onEnterKey);
        }
      }
    };
    var A11y2 = {
      name: "a11y",
      params: {
        a11y: {
          enabled: true,
          notificationClass: "swiper-notification",
          prevSlideMessage: "Previous slide",
          nextSlideMessage: "Next slide",
          firstSlideMessage: "This is the first slide",
          lastSlideMessage: "This is the last slide",
          paginationBulletMessage: "Go to slide {{index}}"
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          a11y: {
            liveRegion: $2('<span class="' + swiper2.params.a11y.notificationClass + '" aria-live="assertive" aria-atomic="true"></span>')
          }
        });
        Object.keys(a11y2).forEach(function(methodName) {
          swiper2.a11y[methodName] = a11y2[methodName].bind(swiper2);
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          if (!swiper2.params.a11y.enabled) {
            return;
          }
          swiper2.a11y.init();
          swiper2.a11y.updateNavigation();
        },
        toEdge: function toEdge() {
          var swiper2 = this;
          if (!swiper2.params.a11y.enabled) {
            return;
          }
          swiper2.a11y.updateNavigation();
        },
        fromEdge: function fromEdge() {
          var swiper2 = this;
          if (!swiper2.params.a11y.enabled) {
            return;
          }
          swiper2.a11y.updateNavigation();
        },
        paginationUpdate: function paginationUpdate() {
          var swiper2 = this;
          if (!swiper2.params.a11y.enabled) {
            return;
          }
          swiper2.a11y.updatePagination();
        },
        destroy: function destroy() {
          var swiper2 = this;
          if (!swiper2.params.a11y.enabled) {
            return;
          }
          swiper2.a11y.destroy();
        }
      }
    };
    var History2 = {
      init: function init() {
        var swiper2 = this;
        if (!swiper2.params.history) {
          return;
        }
        if (!win2.history || !win2.history.pushState) {
          swiper2.params.history.enabled = false;
          swiper2.params.hashNavigation.enabled = true;
          return;
        }
        var history = swiper2.history;
        history.initialized = true;
        history.paths = History2.getPathValues();
        if (!history.paths.key && !history.paths.value) {
          return;
        }
        history.scrollToSlide(0, history.paths.value, swiper2.params.runCallbacksOnInit);
        if (!swiper2.params.history.replaceState) {
          win2.addEventListener("popstate", swiper2.history.setHistoryPopState);
        }
      },
      destroy: function destroy() {
        var swiper2 = this;
        if (!swiper2.params.history.replaceState) {
          win2.removeEventListener("popstate", swiper2.history.setHistoryPopState);
        }
      },
      setHistoryPopState: function setHistoryPopState() {
        var swiper2 = this;
        swiper2.history.paths = History2.getPathValues();
        swiper2.history.scrollToSlide(swiper2.params.speed, swiper2.history.paths.value, false);
      },
      getPathValues: function getPathValues() {
        var pathArray = win2.location.pathname.slice(1).split("/").filter(function(part) {
          return part !== "";
        });
        var total = pathArray.length;
        var key = pathArray[total - 2];
        var value = pathArray[total - 1];
        return { key, value };
      },
      setHistory: function setHistory(key, index3) {
        var swiper2 = this;
        if (!swiper2.history.initialized || !swiper2.params.history.enabled) {
          return;
        }
        var slide3 = swiper2.slides.eq(index3);
        var value = History2.slugify(slide3.attr("data-history"));
        if (!win2.location.pathname.includes(key)) {
          value = key + "/" + value;
        }
        var currentState = win2.history.state;
        if (currentState && currentState.value === value) {
          return;
        }
        if (swiper2.params.history.replaceState) {
          win2.history.replaceState({ value }, null, value);
        } else {
          win2.history.pushState({ value }, null, value);
        }
      },
      slugify: function slugify(text3) {
        return text3.toString().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, "");
      },
      scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
        var swiper2 = this;
        if (value) {
          for (var i = 0, length = swiper2.slides.length; i < length; i += 1) {
            var slide3 = swiper2.slides.eq(i);
            var slideHistory = History2.slugify(slide3.attr("data-history"));
            if (slideHistory === value && !slide3.hasClass(swiper2.params.slideDuplicateClass)) {
              var index3 = slide3.index();
              swiper2.slideTo(index3, speed, runCallbacks);
            }
          }
        } else {
          swiper2.slideTo(0, speed, runCallbacks);
        }
      }
    };
    var History$12 = {
      name: "history",
      params: {
        history: {
          enabled: false,
          replaceState: false,
          key: "slides"
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          history: {
            init: History2.init.bind(swiper2),
            setHistory: History2.setHistory.bind(swiper2),
            setHistoryPopState: History2.setHistoryPopState.bind(swiper2),
            scrollToSlide: History2.scrollToSlide.bind(swiper2),
            destroy: History2.destroy.bind(swiper2)
          }
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          if (swiper2.params.history.enabled) {
            swiper2.history.init();
          }
        },
        destroy: function destroy() {
          var swiper2 = this;
          if (swiper2.params.history.enabled) {
            swiper2.history.destroy();
          }
        },
        transitionEnd: function transitionEnd3() {
          var swiper2 = this;
          if (swiper2.history.initialized) {
            swiper2.history.setHistory(swiper2.params.history.key, swiper2.activeIndex);
          }
        }
      }
    };
    var HashNavigation2 = {
      onHashCange: function onHashCange() {
        var swiper2 = this;
        var newHash = doc2.location.hash.replace("#", "");
        var activeSlideHash = swiper2.slides.eq(swiper2.activeIndex).attr("data-hash");
        if (newHash !== activeSlideHash) {
          var newIndex = swiper2.$wrapperEl.children("." + swiper2.params.slideClass + '[data-hash="' + newHash + '"]').index();
          if (typeof newIndex === "undefined") {
            return;
          }
          swiper2.slideTo(newIndex);
        }
      },
      setHash: function setHash() {
        var swiper2 = this;
        if (!swiper2.hashNavigation.initialized || !swiper2.params.hashNavigation.enabled) {
          return;
        }
        if (swiper2.params.hashNavigation.replaceState && win2.history && win2.history.replaceState) {
          win2.history.replaceState(null, null, "#" + swiper2.slides.eq(swiper2.activeIndex).attr("data-hash") || "");
        } else {
          var slide3 = swiper2.slides.eq(swiper2.activeIndex);
          var hash = slide3.attr("data-hash") || slide3.attr("data-history");
          doc2.location.hash = hash || "";
        }
      },
      init: function init() {
        var swiper2 = this;
        if (!swiper2.params.hashNavigation.enabled || swiper2.params.history && swiper2.params.history.enabled) {
          return;
        }
        swiper2.hashNavigation.initialized = true;
        var hash = doc2.location.hash.replace("#", "");
        if (hash) {
          var speed = 0;
          for (var i = 0, length = swiper2.slides.length; i < length; i += 1) {
            var slide3 = swiper2.slides.eq(i);
            var slideHash = slide3.attr("data-hash") || slide3.attr("data-history");
            if (slideHash === hash && !slide3.hasClass(swiper2.params.slideDuplicateClass)) {
              var index3 = slide3.index();
              swiper2.slideTo(index3, speed, swiper2.params.runCallbacksOnInit, true);
            }
          }
        }
        if (swiper2.params.hashNavigation.watchState) {
          $2(win2).on("hashchange", swiper2.hashNavigation.onHashCange);
        }
      },
      destroy: function destroy() {
        var swiper2 = this;
        if (swiper2.params.hashNavigation.watchState) {
          $2(win2).off("hashchange", swiper2.hashNavigation.onHashCange);
        }
      }
    };
    var HashNavigation$12 = {
      name: "hash-navigation",
      params: {
        hashNavigation: {
          enabled: false,
          replaceState: false,
          watchState: false
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          hashNavigation: {
            initialized: false,
            init: HashNavigation2.init.bind(swiper2),
            destroy: HashNavigation2.destroy.bind(swiper2),
            setHash: HashNavigation2.setHash.bind(swiper2),
            onHashCange: HashNavigation2.onHashCange.bind(swiper2)
          }
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          if (swiper2.params.hashNavigation.enabled) {
            swiper2.hashNavigation.init();
          }
        },
        destroy: function destroy() {
          var swiper2 = this;
          if (swiper2.params.hashNavigation.enabled) {
            swiper2.hashNavigation.destroy();
          }
        },
        transitionEnd: function transitionEnd3() {
          var swiper2 = this;
          if (swiper2.hashNavigation.initialized) {
            swiper2.hashNavigation.setHash();
          }
        }
      }
    };
    var Autoplay2 = {
      run: function run() {
        var swiper2 = this;
        var $activeSlideEl = swiper2.slides.eq(swiper2.activeIndex);
        var delay = swiper2.params.autoplay.delay;
        if ($activeSlideEl.attr("data-swiper-autoplay")) {
          delay = $activeSlideEl.attr("data-swiper-autoplay") || swiper2.params.autoplay.delay;
        }
        clearTimeout(swiper2.autoplay.timeout);
        swiper2.autoplay.timeout = Utils2.nextTick(function() {
          if (swiper2.params.autoplay.reverseDirection) {
            if (swiper2.params.loop) {
              swiper2.loopFix();
              swiper2.slidePrev(swiper2.params.speed, true, true);
              swiper2.emit("autoplay");
            } else if (!swiper2.isBeginning) {
              swiper2.slidePrev(swiper2.params.speed, true, true);
              swiper2.emit("autoplay");
            } else if (!swiper2.params.autoplay.stopOnLastSlide) {
              swiper2.slideTo(swiper2.slides.length - 1, swiper2.params.speed, true, true);
              swiper2.emit("autoplay");
            } else {
              swiper2.autoplay.stop();
            }
          } else if (swiper2.params.loop) {
            swiper2.loopFix();
            swiper2.slideNext(swiper2.params.speed, true, true);
            swiper2.emit("autoplay");
          } else if (!swiper2.isEnd) {
            swiper2.slideNext(swiper2.params.speed, true, true);
            swiper2.emit("autoplay");
          } else if (!swiper2.params.autoplay.stopOnLastSlide) {
            swiper2.slideTo(0, swiper2.params.speed, true, true);
            swiper2.emit("autoplay");
          } else {
            swiper2.autoplay.stop();
          }
        }, delay);
      },
      start: function start() {
        var swiper2 = this;
        if (typeof swiper2.autoplay.timeout !== "undefined") {
          return false;
        }
        if (swiper2.autoplay.running) {
          return false;
        }
        swiper2.autoplay.running = true;
        swiper2.emit("autoplayStart");
        swiper2.autoplay.run();
        return true;
      },
      stop: function stop() {
        var swiper2 = this;
        if (!swiper2.autoplay.running) {
          return false;
        }
        if (typeof swiper2.autoplay.timeout === "undefined") {
          return false;
        }
        if (swiper2.autoplay.timeout) {
          clearTimeout(swiper2.autoplay.timeout);
          swiper2.autoplay.timeout = void 0;
        }
        swiper2.autoplay.running = false;
        swiper2.emit("autoplayStop");
        return true;
      },
      pause: function pause(speed) {
        var swiper2 = this;
        if (!swiper2.autoplay.running) {
          return;
        }
        if (swiper2.autoplay.paused) {
          return;
        }
        if (swiper2.autoplay.timeout) {
          clearTimeout(swiper2.autoplay.timeout);
        }
        swiper2.autoplay.paused = true;
        if (speed === 0 || !swiper2.params.autoplay.waitForTransition) {
          swiper2.autoplay.paused = false;
          swiper2.autoplay.run();
        } else {
          swiper2.$wrapperEl[0].addEventListener("transitionend", swiper2.autoplay.onTransitionEnd);
          swiper2.$wrapperEl[0].addEventListener("webkitTransitionEnd", swiper2.autoplay.onTransitionEnd);
        }
      }
    };
    var Autoplay$12 = {
      name: "autoplay",
      params: {
        autoplay: {
          enabled: false,
          delay: 3e3,
          waitForTransition: true,
          disableOnInteraction: true,
          stopOnLastSlide: false,
          reverseDirection: false
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          autoplay: {
            running: false,
            paused: false,
            run: Autoplay2.run.bind(swiper2),
            start: Autoplay2.start.bind(swiper2),
            stop: Autoplay2.stop.bind(swiper2),
            pause: Autoplay2.pause.bind(swiper2),
            onTransitionEnd: function onTransitionEnd(e) {
              if (!swiper2 || swiper2.destroyed || !swiper2.$wrapperEl) {
                return;
              }
              if (e.target !== this) {
                return;
              }
              swiper2.$wrapperEl[0].removeEventListener("transitionend", swiper2.autoplay.onTransitionEnd);
              swiper2.$wrapperEl[0].removeEventListener("webkitTransitionEnd", swiper2.autoplay.onTransitionEnd);
              swiper2.autoplay.paused = false;
              if (!swiper2.autoplay.running) {
                swiper2.autoplay.stop();
              } else {
                swiper2.autoplay.run();
              }
            }
          }
        });
      },
      on: {
        init: function init() {
          var swiper2 = this;
          if (swiper2.params.autoplay.enabled) {
            swiper2.autoplay.start();
          }
        },
        beforeTransitionStart: function beforeTransitionStart(speed, internal) {
          var swiper2 = this;
          if (swiper2.autoplay.running) {
            if (internal || !swiper2.params.autoplay.disableOnInteraction) {
              swiper2.autoplay.pause(speed);
            } else {
              swiper2.autoplay.stop();
            }
          }
        },
        sliderFirstMove: function sliderFirstMove() {
          var swiper2 = this;
          if (swiper2.autoplay.running) {
            if (swiper2.params.autoplay.disableOnInteraction) {
              swiper2.autoplay.stop();
            } else {
              swiper2.autoplay.pause();
            }
          }
        },
        destroy: function destroy() {
          var swiper2 = this;
          if (swiper2.autoplay.running) {
            swiper2.autoplay.stop();
          }
        }
      }
    };
    var Fade2 = {
      setTranslate: function setTranslate3() {
        var swiper2 = this;
        var slides = swiper2.slides;
        for (var i = 0; i < slides.length; i += 1) {
          var $slideEl = swiper2.slides.eq(i);
          var offset3 = $slideEl[0].swiperSlideOffset;
          var tx = -offset3;
          if (!swiper2.params.virtualTranslate) {
            tx -= swiper2.translate;
          }
          var ty = 0;
          if (!swiper2.isHorizontal()) {
            ty = tx;
            tx = 0;
          }
          var slideOpacity = swiper2.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
          $slideEl.css({
            opacity: slideOpacity
          }).transform("translate3d(" + tx + "px, " + ty + "px, 0px)");
        }
      },
      setTransition: function setTransition3(duration) {
        var swiper2 = this;
        var slides = swiper2.slides;
        var $wrapperEl = swiper2.$wrapperEl;
        slides.transition(duration);
        if (swiper2.params.virtualTranslate && duration !== 0) {
          var eventTriggered = false;
          slides.transitionEnd(function() {
            if (eventTriggered) {
              return;
            }
            if (!swiper2 || swiper2.destroyed) {
              return;
            }
            eventTriggered = true;
            swiper2.animating = false;
            var triggerEvents = ["webkitTransitionEnd", "transitionend"];
            for (var i = 0; i < triggerEvents.length; i += 1) {
              $wrapperEl.trigger(triggerEvents[i]);
            }
          });
        }
      }
    };
    var EffectFade2 = {
      name: "effect-fade",
      params: {
        fadeEffect: {
          crossFade: false
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          fadeEffect: {
            setTranslate: Fade2.setTranslate.bind(swiper2),
            setTransition: Fade2.setTransition.bind(swiper2)
          }
        });
      },
      on: {
        beforeInit: function beforeInit() {
          var swiper2 = this;
          if (swiper2.params.effect !== "fade") {
            return;
          }
          swiper2.classNames.push(swiper2.params.containerModifierClass + "fade");
          var overwriteParams = {
            slidesPerView: 1,
            slidesPerColumn: 1,
            slidesPerGroup: 1,
            watchSlidesProgress: true,
            spaceBetween: 0,
            virtualTranslate: true
          };
          Utils2.extend(swiper2.params, overwriteParams);
          Utils2.extend(swiper2.originalParams, overwriteParams);
        },
        setTranslate: function setTranslate3() {
          var swiper2 = this;
          if (swiper2.params.effect !== "fade") {
            return;
          }
          swiper2.fadeEffect.setTranslate();
        },
        setTransition: function setTransition3(duration) {
          var swiper2 = this;
          if (swiper2.params.effect !== "fade") {
            return;
          }
          swiper2.fadeEffect.setTransition(duration);
        }
      }
    };
    var Cube2 = {
      setTranslate: function setTranslate3() {
        var swiper2 = this;
        var $el = swiper2.$el;
        var $wrapperEl = swiper2.$wrapperEl;
        var slides = swiper2.slides;
        var swiperWidth = swiper2.width;
        var swiperHeight = swiper2.height;
        var rtl = swiper2.rtlTranslate;
        var swiperSize = swiper2.size;
        var params = swiper2.params.cubeEffect;
        var isHorizontal = swiper2.isHorizontal();
        var isVirtual = swiper2.virtual && swiper2.params.virtual.enabled;
        var wrapperRotate = 0;
        var $cubeShadowEl;
        if (params.shadow) {
          if (isHorizontal) {
            $cubeShadowEl = $wrapperEl.find(".swiper-cube-shadow");
            if ($cubeShadowEl.length === 0) {
              $cubeShadowEl = $2('<div class="swiper-cube-shadow"></div>');
              $wrapperEl.append($cubeShadowEl);
            }
            $cubeShadowEl.css({ height: swiperWidth + "px" });
          } else {
            $cubeShadowEl = $el.find(".swiper-cube-shadow");
            if ($cubeShadowEl.length === 0) {
              $cubeShadowEl = $2('<div class="swiper-cube-shadow"></div>');
              $el.append($cubeShadowEl);
            }
          }
        }
        for (var i = 0; i < slides.length; i += 1) {
          var $slideEl = slides.eq(i);
          var slideIndex = i;
          if (isVirtual) {
            slideIndex = parseInt($slideEl.attr("data-swiper-slide-index"), 10);
          }
          var slideAngle = slideIndex * 90;
          var round = Math.floor(slideAngle / 360);
          if (rtl) {
            slideAngle = -slideAngle;
            round = Math.floor(-slideAngle / 360);
          }
          var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
          var tx = 0;
          var ty = 0;
          var tz = 0;
          if (slideIndex % 4 === 0) {
            tx = -round * 4 * swiperSize;
            tz = 0;
          } else if ((slideIndex - 1) % 4 === 0) {
            tx = 0;
            tz = -round * 4 * swiperSize;
          } else if ((slideIndex - 2) % 4 === 0) {
            tx = swiperSize + round * 4 * swiperSize;
            tz = swiperSize;
          } else if ((slideIndex - 3) % 4 === 0) {
            tx = -swiperSize;
            tz = 3 * swiperSize + swiperSize * 4 * round;
          }
          if (rtl) {
            tx = -tx;
          }
          if (!isHorizontal) {
            ty = tx;
            tx = 0;
          }
          var transform3 = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
          if (progress <= 1 && progress > -1) {
            wrapperRotate = slideIndex * 90 + progress * 90;
            if (rtl) {
              wrapperRotate = -slideIndex * 90 - progress * 90;
            }
          }
          $slideEl.transform(transform3);
          if (params.slideShadows) {
            var shadowBefore = isHorizontal ? $slideEl.find(".swiper-slide-shadow-left") : $slideEl.find(".swiper-slide-shadow-top");
            var shadowAfter = isHorizontal ? $slideEl.find(".swiper-slide-shadow-right") : $slideEl.find(".swiper-slide-shadow-bottom");
            if (shadowBefore.length === 0) {
              shadowBefore = $2('<div class="swiper-slide-shadow-' + (isHorizontal ? "left" : "top") + '"></div>');
              $slideEl.append(shadowBefore);
            }
            if (shadowAfter.length === 0) {
              shadowAfter = $2('<div class="swiper-slide-shadow-' + (isHorizontal ? "right" : "bottom") + '"></div>');
              $slideEl.append(shadowAfter);
            }
            if (shadowBefore.length) {
              shadowBefore[0].style.opacity = Math.max(-progress, 0);
            }
            if (shadowAfter.length) {
              shadowAfter[0].style.opacity = Math.max(progress, 0);
            }
          }
        }
        $wrapperEl.css({
          "-webkit-transform-origin": "50% 50% -" + swiperSize / 2 + "px",
          "-moz-transform-origin": "50% 50% -" + swiperSize / 2 + "px",
          "-ms-transform-origin": "50% 50% -" + swiperSize / 2 + "px",
          "transform-origin": "50% 50% -" + swiperSize / 2 + "px"
        });
        if (params.shadow) {
          if (isHorizontal) {
            $cubeShadowEl.transform("translate3d(0px, " + (swiperWidth / 2 + params.shadowOffset) + "px, " + -swiperWidth / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + params.shadowScale + ")");
          } else {
            var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
            var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
            var scale1 = params.shadowScale;
            var scale2 = params.shadowScale / multiplier;
            var offset3 = params.shadowOffset;
            $cubeShadowEl.transform("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + (swiperHeight / 2 + offset3) + "px, " + -swiperHeight / 2 / scale2 + "px) rotateX(-90deg)");
          }
        }
        var zFactor = Browser3.isSafari || Browser3.isUiWebView ? -swiperSize / 2 : 0;
        $wrapperEl.transform("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper2.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper2.isHorizontal() ? -wrapperRotate : 0) + "deg)");
      },
      setTransition: function setTransition3(duration) {
        var swiper2 = this;
        var $el = swiper2.$el;
        var slides = swiper2.slides;
        slides.transition(duration).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(duration);
        if (swiper2.params.cubeEffect.shadow && !swiper2.isHorizontal()) {
          $el.find(".swiper-cube-shadow").transition(duration);
        }
      }
    };
    var EffectCube2 = {
      name: "effect-cube",
      params: {
        cubeEffect: {
          slideShadows: true,
          shadow: true,
          shadowOffset: 20,
          shadowScale: 0.94
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          cubeEffect: {
            setTranslate: Cube2.setTranslate.bind(swiper2),
            setTransition: Cube2.setTransition.bind(swiper2)
          }
        });
      },
      on: {
        beforeInit: function beforeInit() {
          var swiper2 = this;
          if (swiper2.params.effect !== "cube") {
            return;
          }
          swiper2.classNames.push(swiper2.params.containerModifierClass + "cube");
          swiper2.classNames.push(swiper2.params.containerModifierClass + "3d");
          var overwriteParams = {
            slidesPerView: 1,
            slidesPerColumn: 1,
            slidesPerGroup: 1,
            watchSlidesProgress: true,
            resistanceRatio: 0,
            spaceBetween: 0,
            centeredSlides: false,
            virtualTranslate: true
          };
          Utils2.extend(swiper2.params, overwriteParams);
          Utils2.extend(swiper2.originalParams, overwriteParams);
        },
        setTranslate: function setTranslate3() {
          var swiper2 = this;
          if (swiper2.params.effect !== "cube") {
            return;
          }
          swiper2.cubeEffect.setTranslate();
        },
        setTransition: function setTransition3(duration) {
          var swiper2 = this;
          if (swiper2.params.effect !== "cube") {
            return;
          }
          swiper2.cubeEffect.setTransition(duration);
        }
      }
    };
    var Flip2 = {
      setTranslate: function setTranslate3() {
        var swiper2 = this;
        var slides = swiper2.slides;
        var rtl = swiper2.rtlTranslate;
        for (var i = 0; i < slides.length; i += 1) {
          var $slideEl = slides.eq(i);
          var progress = $slideEl[0].progress;
          if (swiper2.params.flipEffect.limitRotation) {
            progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
          }
          var offset3 = $slideEl[0].swiperSlideOffset;
          var rotate = -180 * progress;
          var rotateY = rotate;
          var rotateX = 0;
          var tx = -offset3;
          var ty = 0;
          if (!swiper2.isHorizontal()) {
            ty = tx;
            tx = 0;
            rotateX = -rotateY;
            rotateY = 0;
          } else if (rtl) {
            rotateY = -rotateY;
          }
          $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
          if (swiper2.params.flipEffect.slideShadows) {
            var shadowBefore = swiper2.isHorizontal() ? $slideEl.find(".swiper-slide-shadow-left") : $slideEl.find(".swiper-slide-shadow-top");
            var shadowAfter = swiper2.isHorizontal() ? $slideEl.find(".swiper-slide-shadow-right") : $slideEl.find(".swiper-slide-shadow-bottom");
            if (shadowBefore.length === 0) {
              shadowBefore = $2('<div class="swiper-slide-shadow-' + (swiper2.isHorizontal() ? "left" : "top") + '"></div>');
              $slideEl.append(shadowBefore);
            }
            if (shadowAfter.length === 0) {
              shadowAfter = $2('<div class="swiper-slide-shadow-' + (swiper2.isHorizontal() ? "right" : "bottom") + '"></div>');
              $slideEl.append(shadowAfter);
            }
            if (shadowBefore.length) {
              shadowBefore[0].style.opacity = Math.max(-progress, 0);
            }
            if (shadowAfter.length) {
              shadowAfter[0].style.opacity = Math.max(progress, 0);
            }
          }
          $slideEl.transform("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)");
        }
      },
      setTransition: function setTransition3(duration) {
        var swiper2 = this;
        var slides = swiper2.slides;
        var activeIndex = swiper2.activeIndex;
        var $wrapperEl = swiper2.$wrapperEl;
        slides.transition(duration).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(duration);
        if (swiper2.params.virtualTranslate && duration !== 0) {
          var eventTriggered = false;
          slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
            if (eventTriggered) {
              return;
            }
            if (!swiper2 || swiper2.destroyed) {
              return;
            }
            eventTriggered = true;
            swiper2.animating = false;
            var triggerEvents = ["webkitTransitionEnd", "transitionend"];
            for (var i = 0; i < triggerEvents.length; i += 1) {
              $wrapperEl.trigger(triggerEvents[i]);
            }
          });
        }
      }
    };
    var EffectFlip2 = {
      name: "effect-flip",
      params: {
        flipEffect: {
          slideShadows: true,
          limitRotation: true
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          flipEffect: {
            setTranslate: Flip2.setTranslate.bind(swiper2),
            setTransition: Flip2.setTransition.bind(swiper2)
          }
        });
      },
      on: {
        beforeInit: function beforeInit() {
          var swiper2 = this;
          if (swiper2.params.effect !== "flip") {
            return;
          }
          swiper2.classNames.push(swiper2.params.containerModifierClass + "flip");
          swiper2.classNames.push(swiper2.params.containerModifierClass + "3d");
          var overwriteParams = {
            slidesPerView: 1,
            slidesPerColumn: 1,
            slidesPerGroup: 1,
            watchSlidesProgress: true,
            spaceBetween: 0,
            virtualTranslate: true
          };
          Utils2.extend(swiper2.params, overwriteParams);
          Utils2.extend(swiper2.originalParams, overwriteParams);
        },
        setTranslate: function setTranslate3() {
          var swiper2 = this;
          if (swiper2.params.effect !== "flip") {
            return;
          }
          swiper2.flipEffect.setTranslate();
        },
        setTransition: function setTransition3(duration) {
          var swiper2 = this;
          if (swiper2.params.effect !== "flip") {
            return;
          }
          swiper2.flipEffect.setTransition(duration);
        }
      }
    };
    var Coverflow2 = {
      setTranslate: function setTranslate3() {
        var swiper2 = this;
        var swiperWidth = swiper2.width;
        var swiperHeight = swiper2.height;
        var slides = swiper2.slides;
        var $wrapperEl = swiper2.$wrapperEl;
        var slidesSizesGrid = swiper2.slidesSizesGrid;
        var params = swiper2.params.coverflowEffect;
        var isHorizontal = swiper2.isHorizontal();
        var transform3 = swiper2.translate;
        var center = isHorizontal ? -transform3 + swiperWidth / 2 : -transform3 + swiperHeight / 2;
        var rotate = isHorizontal ? params.rotate : -params.rotate;
        var translate3 = params.depth;
        for (var i = 0, length = slides.length; i < length; i += 1) {
          var $slideEl = slides.eq(i);
          var slideSize = slidesSizesGrid[i];
          var slideOffset = $slideEl[0].swiperSlideOffset;
          var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;
          var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
          var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
          var translateZ = -translate3 * Math.abs(offsetMultiplier);
          var translateY = isHorizontal ? 0 : params.stretch * offsetMultiplier;
          var translateX = isHorizontal ? params.stretch * offsetMultiplier : 0;
          if (Math.abs(translateX) < 1e-3) {
            translateX = 0;
          }
          if (Math.abs(translateY) < 1e-3) {
            translateY = 0;
          }
          if (Math.abs(translateZ) < 1e-3) {
            translateZ = 0;
          }
          if (Math.abs(rotateY) < 1e-3) {
            rotateY = 0;
          }
          if (Math.abs(rotateX) < 1e-3) {
            rotateX = 0;
          }
          var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px)  rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)";
          $slideEl.transform(slideTransform);
          $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
          if (params.slideShadows) {
            var $shadowBeforeEl = isHorizontal ? $slideEl.find(".swiper-slide-shadow-left") : $slideEl.find(".swiper-slide-shadow-top");
            var $shadowAfterEl = isHorizontal ? $slideEl.find(".swiper-slide-shadow-right") : $slideEl.find(".swiper-slide-shadow-bottom");
            if ($shadowBeforeEl.length === 0) {
              $shadowBeforeEl = $2('<div class="swiper-slide-shadow-' + (isHorizontal ? "left" : "top") + '"></div>');
              $slideEl.append($shadowBeforeEl);
            }
            if ($shadowAfterEl.length === 0) {
              $shadowAfterEl = $2('<div class="swiper-slide-shadow-' + (isHorizontal ? "right" : "bottom") + '"></div>');
              $slideEl.append($shadowAfterEl);
            }
            if ($shadowBeforeEl.length) {
              $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
            }
            if ($shadowAfterEl.length) {
              $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
            }
          }
        }
        if (Support3.pointerEvents || Support3.prefixedPointerEvents) {
          var ws = $wrapperEl[0].style;
          ws.perspectiveOrigin = center + "px 50%";
        }
      },
      setTransition: function setTransition3(duration) {
        var swiper2 = this;
        swiper2.slides.transition(duration).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(duration);
      }
    };
    var EffectCoverflow2 = {
      name: "effect-coverflow",
      params: {
        coverflowEffect: {
          rotate: 50,
          stretch: 0,
          depth: 100,
          modifier: 1,
          slideShadows: true
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          coverflowEffect: {
            setTranslate: Coverflow2.setTranslate.bind(swiper2),
            setTransition: Coverflow2.setTransition.bind(swiper2)
          }
        });
      },
      on: {
        beforeInit: function beforeInit() {
          var swiper2 = this;
          if (swiper2.params.effect !== "coverflow") {
            return;
          }
          swiper2.classNames.push(swiper2.params.containerModifierClass + "coverflow");
          swiper2.classNames.push(swiper2.params.containerModifierClass + "3d");
          swiper2.params.watchSlidesProgress = true;
          swiper2.originalParams.watchSlidesProgress = true;
        },
        setTranslate: function setTranslate3() {
          var swiper2 = this;
          if (swiper2.params.effect !== "coverflow") {
            return;
          }
          swiper2.coverflowEffect.setTranslate();
        },
        setTransition: function setTransition3(duration) {
          var swiper2 = this;
          if (swiper2.params.effect !== "coverflow") {
            return;
          }
          swiper2.coverflowEffect.setTransition(duration);
        }
      }
    };
    var Thumbs2 = {
      init: function init() {
        var swiper2 = this;
        var ref = swiper2.params;
        var thumbsParams = ref.thumbs;
        var SwiperClass3 = swiper2.constructor;
        if (thumbsParams.swiper instanceof SwiperClass3) {
          swiper2.thumbs.swiper = thumbsParams.swiper;
          Utils2.extend(swiper2.thumbs.swiper.originalParams, {
            watchSlidesProgress: true,
            slideToClickedSlide: false
          });
          Utils2.extend(swiper2.thumbs.swiper.params, {
            watchSlidesProgress: true,
            slideToClickedSlide: false
          });
        } else if (Utils2.isObject(thumbsParams.swiper)) {
          swiper2.thumbs.swiper = new SwiperClass3(Utils2.extend({}, thumbsParams.swiper, {
            watchSlidesVisibility: true,
            watchSlidesProgress: true,
            slideToClickedSlide: false
          }));
          swiper2.thumbs.swiperCreated = true;
        }
        swiper2.thumbs.swiper.$el.addClass(swiper2.params.thumbs.thumbsContainerClass);
        swiper2.thumbs.swiper.on("tap", swiper2.thumbs.onThumbClick);
      },
      onThumbClick: function onThumbClick() {
        var swiper2 = this;
        var thumbsSwiper = swiper2.thumbs.swiper;
        if (!thumbsSwiper) {
          return;
        }
        var clickedIndex = thumbsSwiper.clickedIndex;
        var clickedSlide = thumbsSwiper.clickedSlide;
        if (clickedSlide && $2(clickedSlide).hasClass(swiper2.params.thumbs.slideThumbActiveClass)) {
          return;
        }
        if (typeof clickedIndex === "undefined" || clickedIndex === null) {
          return;
        }
        var slideToIndex;
        if (thumbsSwiper.params.loop) {
          slideToIndex = parseInt($2(thumbsSwiper.clickedSlide).attr("data-swiper-slide-index"), 10);
        } else {
          slideToIndex = clickedIndex;
        }
        if (swiper2.params.loop) {
          var currentIndex = swiper2.activeIndex;
          if (swiper2.slides.eq(currentIndex).hasClass(swiper2.params.slideDuplicateClass)) {
            swiper2.loopFix();
            swiper2._clientLeft = swiper2.$wrapperEl[0].clientLeft;
            currentIndex = swiper2.activeIndex;
          }
          var prevIndex = swiper2.slides.eq(currentIndex).prevAll('[data-swiper-slide-index="' + slideToIndex + '"]').eq(0).index();
          var nextIndex = swiper2.slides.eq(currentIndex).nextAll('[data-swiper-slide-index="' + slideToIndex + '"]').eq(0).index();
          if (typeof prevIndex === "undefined") {
            slideToIndex = nextIndex;
          } else if (typeof nextIndex === "undefined") {
            slideToIndex = prevIndex;
          } else if (nextIndex - currentIndex < currentIndex - prevIndex) {
            slideToIndex = nextIndex;
          } else {
            slideToIndex = prevIndex;
          }
        }
        swiper2.slideTo(slideToIndex);
      },
      update: function update3(initial) {
        var swiper2 = this;
        var thumbsSwiper = swiper2.thumbs.swiper;
        if (!thumbsSwiper) {
          return;
        }
        var slidesPerView = thumbsSwiper.params.slidesPerView === "auto" ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
        if (swiper2.realIndex !== thumbsSwiper.realIndex) {
          var currentThumbsIndex = thumbsSwiper.activeIndex;
          var newThumbsIndex;
          if (thumbsSwiper.params.loop) {
            if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
              thumbsSwiper.loopFix();
              thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
              currentThumbsIndex = thumbsSwiper.activeIndex;
            }
            var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll('[data-swiper-slide-index="' + swiper2.realIndex + '"]').eq(0).index();
            var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll('[data-swiper-slide-index="' + swiper2.realIndex + '"]').eq(0).index();
            if (typeof prevThumbsIndex === "undefined") {
              newThumbsIndex = nextThumbsIndex;
            } else if (typeof nextThumbsIndex === "undefined") {
              newThumbsIndex = prevThumbsIndex;
            } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {
              newThumbsIndex = currentThumbsIndex;
            } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {
              newThumbsIndex = nextThumbsIndex;
            } else {
              newThumbsIndex = prevThumbsIndex;
            }
          } else {
            newThumbsIndex = swiper2.realIndex;
          }
          if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
            if (thumbsSwiper.params.centeredSlides) {
              if (newThumbsIndex > currentThumbsIndex) {
                newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
              } else {
                newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
              }
            } else if (newThumbsIndex > currentThumbsIndex) {
              newThumbsIndex = newThumbsIndex - slidesPerView + 1;
            }
            thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : void 0);
          }
        }
        var thumbsToActivate = 1;
        var thumbActiveClass = swiper2.params.thumbs.slideThumbActiveClass;
        if (swiper2.params.slidesPerView > 1 && !swiper2.params.centeredSlides) {
          thumbsToActivate = swiper2.params.slidesPerView;
        }
        thumbsSwiper.slides.removeClass(thumbActiveClass);
        if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual) {
          for (var i = 0; i < thumbsToActivate; i += 1) {
            thumbsSwiper.$wrapperEl.children('[data-swiper-slide-index="' + (swiper2.realIndex + i) + '"]').addClass(thumbActiveClass);
          }
        } else {
          for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) {
            thumbsSwiper.slides.eq(swiper2.realIndex + i$1).addClass(thumbActiveClass);
          }
        }
      }
    };
    var Thumbs$12 = {
      name: "thumbs",
      params: {
        thumbs: {
          swiper: null,
          slideThumbActiveClass: "swiper-slide-thumb-active",
          thumbsContainerClass: "swiper-container-thumbs"
        }
      },
      create: function create() {
        var swiper2 = this;
        Utils2.extend(swiper2, {
          thumbs: {
            swiper: null,
            init: Thumbs2.init.bind(swiper2),
            update: Thumbs2.update.bind(swiper2),
            onThumbClick: Thumbs2.onThumbClick.bind(swiper2)
          }
        });
      },
      on: {
        beforeInit: function beforeInit() {
          var swiper2 = this;
          var ref = swiper2.params;
          var thumbs = ref.thumbs;
          if (!thumbs || !thumbs.swiper) {
            return;
          }
          swiper2.thumbs.init();
          swiper2.thumbs.update(true);
        },
        slideChange: function slideChange() {
          var swiper2 = this;
          if (!swiper2.thumbs.swiper) {
            return;
          }
          swiper2.thumbs.update();
        },
        update: function update3() {
          var swiper2 = this;
          if (!swiper2.thumbs.swiper) {
            return;
          }
          swiper2.thumbs.update();
        },
        resize: function resize() {
          var swiper2 = this;
          if (!swiper2.thumbs.swiper) {
            return;
          }
          swiper2.thumbs.update();
        },
        observerUpdate: function observerUpdate() {
          var swiper2 = this;
          if (!swiper2.thumbs.swiper) {
            return;
          }
          swiper2.thumbs.update();
        },
        setTransition: function setTransition3(duration) {
          var swiper2 = this;
          var thumbsSwiper = swiper2.thumbs.swiper;
          if (!thumbsSwiper) {
            return;
          }
          thumbsSwiper.setTransition(duration);
        },
        beforeDestroy: function beforeDestroy() {
          var swiper2 = this;
          var thumbsSwiper = swiper2.thumbs.swiper;
          if (!thumbsSwiper) {
            return;
          }
          if (swiper2.thumbs.swiperCreated && thumbsSwiper) {
            thumbsSwiper.destroy();
          }
        }
      }
    };
    var components2 = [
      Device$12,
      Support$12,
      Browser$12,
      Resize2,
      Observer$12,
      Virtual$12,
      Keyboard$12,
      Mousewheel$12,
      Navigation$12,
      Pagination$12,
      Scrollbar$12,
      Parallax$12,
      Zoom$12,
      Lazy$12,
      Controller$12,
      A11y2,
      History$12,
      HashNavigation$12,
      Autoplay$12,
      EffectFade2,
      EffectCube2,
      EffectFlip2,
      EffectCoverflow2,
      Thumbs$12
    ];
    if (typeof Swiper2.use === "undefined") {
      Swiper2.use = Swiper2.Class.use;
      Swiper2.installModule = Swiper2.Class.installModule;
    }
    Swiper2.use(components2);
    return Swiper2;
  });
})(swiper$1);
const swiper = "";
function isObject$1(obj) {
  return obj !== null && typeof obj === "object" && "constructor" in obj && obj.constructor === Object;
}
function extend(target, src) {
  if (target === void 0) {
    target = {};
  }
  if (src === void 0) {
    src = {};
  }
  Object.keys(src).forEach(function(key) {
    if (typeof target[key] === "undefined")
      target[key] = src[key];
    else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) {
      extend(target[key], src[key]);
    }
  });
}
var doc$1 = typeof document !== "undefined" ? document : {};
var ssrDocument = {
  body: {},
  addEventListener: function() {
  },
  removeEventListener: function() {
  },
  activeElement: {
    blur: function() {
    },
    nodeName: ""
  },
  querySelector: function() {
    return null;
  },
  querySelectorAll: function() {
    return [];
  },
  getElementById: function() {
    return null;
  },
  createEvent: function() {
    return {
      initEvent: function() {
      }
    };
  },
  createElement: function() {
    return {
      children: [],
      childNodes: [],
      style: {},
      setAttribute: function() {
      },
      getElementsByTagName: function() {
        return [];
      }
    };
  },
  createElementNS: function() {
    return {};
  },
  importNode: function() {
    return null;
  },
  location: {
    hash: "",
    host: "",
    hostname: "",
    href: "",
    origin: "",
    pathname: "",
    protocol: "",
    search: ""
  }
};
extend(doc$1, ssrDocument);
var win$1 = typeof window !== "undefined" ? window : {};
var ssrWindow = {
  document: ssrDocument,
  navigator: {
    userAgent: ""
  },
  location: {
    hash: "",
    host: "",
    hostname: "",
    href: "",
    origin: "",
    pathname: "",
    protocol: "",
    search: ""
  },
  history: {
    replaceState: function() {
    },
    pushState: function() {
    },
    go: function() {
    },
    back: function() {
    }
  },
  CustomEvent: function CustomEvent() {
    return this;
  },
  addEventListener: function() {
  },
  removeEventListener: function() {
  },
  getComputedStyle: function() {
    return {
      getPropertyValue: function() {
        return "";
      }
    };
  },
  Image: function() {
  },
  Date: function() {
  },
  screen: {},
  setTimeout: function() {
  },
  clearTimeout: function() {
  },
  matchMedia: function() {
    return {};
  }
};
extend(win$1, ssrWindow);
class Dom7 {
  constructor(arr) {
    const self2 = this;
    for (let i = 0; i < arr.length; i += 1) {
      self2[i] = arr[i];
    }
    self2.length = arr.length;
    return this;
  }
}
function $(selector, context) {
  const arr = [];
  let i = 0;
  if (selector && !context) {
    if (selector instanceof Dom7) {
      return selector;
    }
  }
  if (selector) {
    if (typeof selector === "string") {
      let els;
      let tempParent;
      const html2 = selector.trim();
      if (html2.indexOf("<") >= 0 && html2.indexOf(">") >= 0) {
        let toCreate = "div";
        if (html2.indexOf("<li") === 0)
          toCreate = "ul";
        if (html2.indexOf("<tr") === 0)
          toCreate = "tbody";
        if (html2.indexOf("<td") === 0 || html2.indexOf("<th") === 0)
          toCreate = "tr";
        if (html2.indexOf("<tbody") === 0)
          toCreate = "table";
        if (html2.indexOf("<option") === 0)
          toCreate = "select";
        tempParent = doc$1.createElement(toCreate);
        tempParent.innerHTML = html2;
        for (i = 0; i < tempParent.childNodes.length; i += 1) {
          arr.push(tempParent.childNodes[i]);
        }
      } else {
        if (!context && selector[0] === "#" && !selector.match(/[ .<>:~]/)) {
          els = [doc$1.getElementById(selector.trim().split("#")[1])];
        } else {
          els = (context || doc$1).querySelectorAll(selector.trim());
        }
        for (i = 0; i < els.length; i += 1) {
          if (els[i])
            arr.push(els[i]);
        }
      }
    } else if (selector.nodeType || selector === win$1 || selector === doc$1) {
      arr.push(selector);
    } else if (selector.length > 0 && selector[0].nodeType) {
      for (i = 0; i < selector.length; i += 1) {
        arr.push(selector[i]);
      }
    }
  }
  return new Dom7(arr);
}
$.fn = Dom7.prototype;
$.Class = Dom7;
$.Dom7 = Dom7;
function unique(arr) {
  const uniqueArray = [];
  for (let i = 0; i < arr.length; i += 1) {
    if (uniqueArray.indexOf(arr[i]) === -1)
      uniqueArray.push(arr[i]);
  }
  return uniqueArray;
}
function addClass(className) {
  if (typeof className === "undefined") {
    return this;
  }
  const classes2 = className.split(" ");
  for (let i = 0; i < classes2.length; i += 1) {
    for (let j = 0; j < this.length; j += 1) {
      if (typeof this[j] !== "undefined" && typeof this[j].classList !== "undefined")
        this[j].classList.add(classes2[i]);
    }
  }
  return this;
}
function removeClass(className) {
  const classes2 = className.split(" ");
  for (let i = 0; i < classes2.length; i += 1) {
    for (let j = 0; j < this.length; j += 1) {
      if (typeof this[j] !== "undefined" && typeof this[j].classList !== "undefined")
        this[j].classList.remove(classes2[i]);
    }
  }
  return this;
}
function hasClass(className) {
  if (!this[0])
    return false;
  return this[0].classList.contains(className);
}
function toggleClass(className) {
  const classes2 = className.split(" ");
  for (let i = 0; i < classes2.length; i += 1) {
    for (let j = 0; j < this.length; j += 1) {
      if (typeof this[j] !== "undefined" && typeof this[j].classList !== "undefined")
        this[j].classList.toggle(classes2[i]);
    }
  }
  return this;
}
function attr(attrs, value) {
  if (arguments.length === 1 && typeof attrs === "string") {
    if (this[0])
      return this[0].getAttribute(attrs);
    return void 0;
  }
  for (let i = 0; i < this.length; i += 1) {
    if (arguments.length === 2) {
      this[i].setAttribute(attrs, value);
    } else {
      for (const attrName in attrs) {
        this[i][attrName] = attrs[attrName];
        this[i].setAttribute(attrName, attrs[attrName]);
      }
    }
  }
  return this;
}
function removeAttr(attr2) {
  for (let i = 0; i < this.length; i += 1) {
    this[i].removeAttribute(attr2);
  }
  return this;
}
function data(key, value) {
  let el;
  if (typeof value === "undefined") {
    el = this[0];
    if (el) {
      if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {
        return el.dom7ElementDataStorage[key];
      }
      const dataKey = el.getAttribute(`data-${key}`);
      if (dataKey) {
        return dataKey;
      }
      return void 0;
    }
    return void 0;
  }
  for (let i = 0; i < this.length; i += 1) {
    el = this[i];
    if (!el.dom7ElementDataStorage)
      el.dom7ElementDataStorage = {};
    el.dom7ElementDataStorage[key] = value;
  }
  return this;
}
function transform(transform2) {
  for (let i = 0; i < this.length; i += 1) {
    const elStyle = this[i].style;
    elStyle.webkitTransform = transform2;
    elStyle.transform = transform2;
  }
  return this;
}
function transition$1(duration) {
  if (typeof duration !== "string") {
    duration = `${duration}ms`;
  }
  for (let i = 0; i < this.length; i += 1) {
    const elStyle = this[i].style;
    elStyle.webkitTransitionDuration = duration;
    elStyle.transitionDuration = duration;
  }
  return this;
}
function on(...args) {
  let [eventType, targetSelector, listener, capture] = args;
  if (typeof args[1] === "function") {
    [eventType, listener, capture] = args;
    targetSelector = void 0;
  }
  if (!capture)
    capture = false;
  function handleLiveEvent(e) {
    const target = e.target;
    if (!target)
      return;
    const eventData = e.target.dom7EventData || [];
    if (eventData.indexOf(e) < 0) {
      eventData.unshift(e);
    }
    if ($(target).is(targetSelector))
      listener.apply(target, eventData);
    else {
      const parents2 = $(target).parents();
      for (let k = 0; k < parents2.length; k += 1) {
        if ($(parents2[k]).is(targetSelector))
          listener.apply(parents2[k], eventData);
      }
    }
  }
  function handleEvent(e) {
    const eventData = e && e.target ? e.target.dom7EventData || [] : [];
    if (eventData.indexOf(e) < 0) {
      eventData.unshift(e);
    }
    listener.apply(this, eventData);
  }
  const events2 = eventType.split(" ");
  let j;
  for (let i = 0; i < this.length; i += 1) {
    const el = this[i];
    if (!targetSelector) {
      for (j = 0; j < events2.length; j += 1) {
        const event = events2[j];
        if (!el.dom7Listeners)
          el.dom7Listeners = {};
        if (!el.dom7Listeners[event])
          el.dom7Listeners[event] = [];
        el.dom7Listeners[event].push({
          listener,
          proxyListener: handleEvent
        });
        el.addEventListener(event, handleEvent, capture);
      }
    } else {
      for (j = 0; j < events2.length; j += 1) {
        const event = events2[j];
        if (!el.dom7LiveListeners)
          el.dom7LiveListeners = {};
        if (!el.dom7LiveListeners[event])
          el.dom7LiveListeners[event] = [];
        el.dom7LiveListeners[event].push({
          listener,
          proxyListener: handleLiveEvent
        });
        el.addEventListener(event, handleLiveEvent, capture);
      }
    }
  }
  return this;
}
function off(...args) {
  let [eventType, targetSelector, listener, capture] = args;
  if (typeof args[1] === "function") {
    [eventType, listener, capture] = args;
    targetSelector = void 0;
  }
  if (!capture)
    capture = false;
  const events2 = eventType.split(" ");
  for (let i = 0; i < events2.length; i += 1) {
    const event = events2[i];
    for (let j = 0; j < this.length; j += 1) {
      const el = this[j];
      let handlers;
      if (!targetSelector && el.dom7Listeners) {
        handlers = el.dom7Listeners[event];
      } else if (targetSelector && el.dom7LiveListeners) {
        handlers = el.dom7LiveListeners[event];
      }
      if (handlers && handlers.length) {
        for (let k = handlers.length - 1; k >= 0; k -= 1) {
          const handler = handlers[k];
          if (listener && handler.listener === listener) {
            el.removeEventListener(event, handler.proxyListener, capture);
            handlers.splice(k, 1);
          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
            el.removeEventListener(event, handler.proxyListener, capture);
            handlers.splice(k, 1);
          } else if (!listener) {
            el.removeEventListener(event, handler.proxyListener, capture);
            handlers.splice(k, 1);
          }
        }
      }
    }
  }
  return this;
}
function trigger(...args) {
  const events2 = args[0].split(" ");
  const eventData = args[1];
  for (let i = 0; i < events2.length; i += 1) {
    const event = events2[i];
    for (let j = 0; j < this.length; j += 1) {
      const el = this[j];
      let evt;
      try {
        evt = new win$1.CustomEvent(event, {
          detail: eventData,
          bubbles: true,
          cancelable: true
        });
      } catch (e) {
        evt = doc$1.createEvent("Event");
        evt.initEvent(event, true, true);
        evt.detail = eventData;
      }
      el.dom7EventData = args.filter((data2, dataIndex) => dataIndex > 0);
      el.dispatchEvent(evt);
      el.dom7EventData = [];
      delete el.dom7EventData;
    }
  }
  return this;
}
function transitionEnd$1(callback) {
  const events2 = ["webkitTransitionEnd", "transitionend"];
  const dom = this;
  let i;
  function fireCallBack(e) {
    if (e.target !== this)
      return;
    callback.call(this, e);
    for (i = 0; i < events2.length; i += 1) {
      dom.off(events2[i], fireCallBack);
    }
  }
  if (callback) {
    for (i = 0; i < events2.length; i += 1) {
      dom.on(events2[i], fireCallBack);
    }
  }
  return this;
}
function outerWidth(includeMargins) {
  if (this.length > 0) {
    if (includeMargins) {
      const styles2 = this.styles();
      return this[0].offsetWidth + parseFloat(styles2.getPropertyValue("margin-right")) + parseFloat(styles2.getPropertyValue("margin-left"));
    }
    return this[0].offsetWidth;
  }
  return null;
}
function outerHeight(includeMargins) {
  if (this.length > 0) {
    if (includeMargins) {
      const styles2 = this.styles();
      return this[0].offsetHeight + parseFloat(styles2.getPropertyValue("margin-top")) + parseFloat(styles2.getPropertyValue("margin-bottom"));
    }
    return this[0].offsetHeight;
  }
  return null;
}
function offset() {
  if (this.length > 0) {
    const el = this[0];
    const box = el.getBoundingClientRect();
    const body = doc$1.body;
    const clientTop = el.clientTop || body.clientTop || 0;
    const clientLeft = el.clientLeft || body.clientLeft || 0;
    const scrollTop = el === win$1 ? win$1.scrollY : el.scrollTop;
    const scrollLeft = el === win$1 ? win$1.scrollX : el.scrollLeft;
    return {
      top: box.top + scrollTop - clientTop,
      left: box.left + scrollLeft - clientLeft
    };
  }
  return null;
}
function styles() {
  if (this[0])
    return win$1.getComputedStyle(this[0], null);
  return {};
}
function css(props, value) {
  let i;
  if (arguments.length === 1) {
    if (typeof props === "string") {
      if (this[0])
        return win$1.getComputedStyle(this[0], null).getPropertyValue(props);
    } else {
      for (i = 0; i < this.length; i += 1) {
        for (let prop in props) {
          this[i].style[prop] = props[prop];
        }
      }
      return this;
    }
  }
  if (arguments.length === 2 && typeof props === "string") {
    for (i = 0; i < this.length; i += 1) {
      this[i].style[props] = value;
    }
    return this;
  }
  return this;
}
function each(callback) {
  if (!callback)
    return this;
  for (let i = 0; i < this.length; i += 1) {
    if (callback.call(this[i], i, this[i]) === false) {
      return this;
    }
  }
  return this;
}
function html(html2) {
  if (typeof html2 === "undefined") {
    return this[0] ? this[0].innerHTML : void 0;
  }
  for (let i = 0; i < this.length; i += 1) {
    this[i].innerHTML = html2;
  }
  return this;
}
function text(text2) {
  if (typeof text2 === "undefined") {
    if (this[0]) {
      return this[0].textContent.trim();
    }
    return null;
  }
  for (let i = 0; i < this.length; i += 1) {
    this[i].textContent = text2;
  }
  return this;
}
function is(selector) {
  const el = this[0];
  let compareWith;
  let i;
  if (!el || typeof selector === "undefined")
    return false;
  if (typeof selector === "string") {
    if (el.matches)
      return el.matches(selector);
    else if (el.webkitMatchesSelector)
      return el.webkitMatchesSelector(selector);
    else if (el.msMatchesSelector)
      return el.msMatchesSelector(selector);
    compareWith = $(selector);
    for (i = 0; i < compareWith.length; i += 1) {
      if (compareWith[i] === el)
        return true;
    }
    return false;
  } else if (selector === doc$1)
    return el === doc$1;
  else if (selector === win$1)
    return el === win$1;
  if (selector.nodeType || selector instanceof Dom7) {
    compareWith = selector.nodeType ? [selector] : selector;
    for (i = 0; i < compareWith.length; i += 1) {
      if (compareWith[i] === el)
        return true;
    }
    return false;
  }
  return false;
}
function index() {
  let child = this[0];
  let i;
  if (child) {
    i = 0;
    while ((child = child.previousSibling) !== null) {
      if (child.nodeType === 1)
        i += 1;
    }
    return i;
  }
  return void 0;
}
function eq$1(index2) {
  if (typeof index2 === "undefined")
    return this;
  const length = this.length;
  let returnIndex;
  if (index2 > length - 1) {
    return new Dom7([]);
  }
  if (index2 < 0) {
    returnIndex = length + index2;
    if (returnIndex < 0)
      return new Dom7([]);
    return new Dom7([this[returnIndex]]);
  }
  return new Dom7([this[index2]]);
}
function append(...args) {
  let newChild;
  for (let k = 0; k < args.length; k += 1) {
    newChild = args[k];
    for (let i = 0; i < this.length; i += 1) {
      if (typeof newChild === "string") {
        const tempDiv = doc$1.createElement("div");
        tempDiv.innerHTML = newChild;
        while (tempDiv.firstChild) {
          this[i].appendChild(tempDiv.firstChild);
        }
      } else if (newChild instanceof Dom7) {
        for (let j = 0; j < newChild.length; j += 1) {
          this[i].appendChild(newChild[j]);
        }
      } else {
        this[i].appendChild(newChild);
      }
    }
  }
  return this;
}
function prepend(newChild) {
  let i;
  let j;
  for (i = 0; i < this.length; i += 1) {
    if (typeof newChild === "string") {
      const tempDiv = doc$1.createElement("div");
      tempDiv.innerHTML = newChild;
      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
      }
    } else if (newChild instanceof Dom7) {
      for (j = 0; j < newChild.length; j += 1) {
        this[i].insertBefore(newChild[j], this[i].childNodes[0]);
      }
    } else {
      this[i].insertBefore(newChild, this[i].childNodes[0]);
    }
  }
  return this;
}
function next(selector) {
  if (this.length > 0) {
    if (selector) {
      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
        return new Dom7([this[0].nextElementSibling]);
      }
      return new Dom7([]);
    }
    if (this[0].nextElementSibling)
      return new Dom7([this[0].nextElementSibling]);
    return new Dom7([]);
  }
  return new Dom7([]);
}
function nextAll(selector) {
  const nextEls = [];
  let el = this[0];
  if (!el)
    return new Dom7([]);
  while (el.nextElementSibling) {
    const next2 = el.nextElementSibling;
    if (selector) {
      if ($(next2).is(selector))
        nextEls.push(next2);
    } else
      nextEls.push(next2);
    el = next2;
  }
  return new Dom7(nextEls);
}
function prev(selector) {
  if (this.length > 0) {
    const el = this[0];
    if (selector) {
      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
        return new Dom7([el.previousElementSibling]);
      }
      return new Dom7([]);
    }
    if (el.previousElementSibling)
      return new Dom7([el.previousElementSibling]);
    return new Dom7([]);
  }
  return new Dom7([]);
}
function prevAll(selector) {
  const prevEls = [];
  let el = this[0];
  if (!el)
    return new Dom7([]);
  while (el.previousElementSibling) {
    const prev2 = el.previousElementSibling;
    if (selector) {
      if ($(prev2).is(selector))
        prevEls.push(prev2);
    } else
      prevEls.push(prev2);
    el = prev2;
  }
  return new Dom7(prevEls);
}
function parent(selector) {
  const parents2 = [];
  for (let i = 0; i < this.length; i += 1) {
    if (this[i].parentNode !== null) {
      if (selector) {
        if ($(this[i].parentNode).is(selector))
          parents2.push(this[i].parentNode);
      } else {
        parents2.push(this[i].parentNode);
      }
    }
  }
  return $(unique(parents2));
}
function parents(selector) {
  const parents2 = [];
  for (let i = 0; i < this.length; i += 1) {
    let parent2 = this[i].parentNode;
    while (parent2) {
      if (selector) {
        if ($(parent2).is(selector))
          parents2.push(parent2);
      } else {
        parents2.push(parent2);
      }
      parent2 = parent2.parentNode;
    }
  }
  return $(unique(parents2));
}
function closest(selector) {
  let closest2 = this;
  if (typeof selector === "undefined") {
    return new Dom7([]);
  }
  if (!closest2.is(selector)) {
    closest2 = closest2.parents(selector).eq(0);
  }
  return closest2;
}
function find(selector) {
  const foundElements = [];
  for (let i = 0; i < this.length; i += 1) {
    const found = this[i].querySelectorAll(selector);
    for (let j = 0; j < found.length; j += 1) {
      foundElements.push(found[j]);
    }
  }
  return new Dom7(foundElements);
}
function children(selector) {
  const children2 = [];
  for (let i = 0; i < this.length; i += 1) {
    const childNodes = this[i].childNodes;
    for (let j = 0; j < childNodes.length; j += 1) {
      if (!selector) {
        if (childNodes[j].nodeType === 1)
          children2.push(childNodes[j]);
      } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {
        children2.push(childNodes[j]);
      }
    }
  }
  return new Dom7(unique(children2));
}
function remove() {
  for (let i = 0; i < this.length; i += 1) {
    if (this[i].parentNode)
      this[i].parentNode.removeChild(this[i]);
  }
  return this;
}
function add(...args) {
  const dom = this;
  let i;
  let j;
  for (i = 0; i < args.length; i += 1) {
    const toAdd = $(args[i]);
    for (j = 0; j < toAdd.length; j += 1) {
      dom[dom.length] = toAdd[j];
      dom.length += 1;
    }
  }
  return dom;
}
var doc = typeof document === "undefined" ? {
  body: {},
  addEventListener: function addEventListener() {
  },
  removeEventListener: function removeEventListener() {
  },
  activeElement: {
    blur: function blur() {
    },
    nodeName: ""
  },
  querySelector: function querySelector() {
    return null;
  },
  querySelectorAll: function querySelectorAll() {
    return [];
  },
  getElementById: function getElementById() {
    return null;
  },
  createEvent: function createEvent() {
    return {
      initEvent: function initEvent() {
      }
    };
  },
  createElement: function createElement() {
    return {
      children: [],
      childNodes: [],
      style: {},
      setAttribute: function setAttribute() {
      },
      getElementsByTagName: function getElementsByTagName() {
        return [];
      }
    };
  },
  location: { hash: "" }
} : document;
var win = typeof window === "undefined" ? {
  document: doc,
  navigator: {
    userAgent: ""
  },
  location: {},
  history: {},
  CustomEvent: function CustomEvent2() {
    return this;
  },
  addEventListener: function addEventListener2() {
  },
  removeEventListener: function removeEventListener2() {
  },
  getComputedStyle: function getComputedStyle() {
    return {
      getPropertyValue: function getPropertyValue() {
        return "";
      }
    };
  },
  Image: function Image() {
  },
  Date: function Date2() {
  },
  screen: {},
  setTimeout: function setTimeout2() {
  },
  clearTimeout: function clearTimeout2() {
  }
} : window;
const Methods = {
  addClass,
  removeClass,
  hasClass,
  toggleClass,
  attr,
  removeAttr,
  data,
  transform,
  transition: transition$1,
  on,
  off,
  trigger,
  transitionEnd: transitionEnd$1,
  outerWidth,
  outerHeight,
  offset,
  css,
  each,
  html,
  text,
  is,
  index,
  eq: eq$1,
  append,
  prepend,
  next,
  nextAll,
  prev,
  prevAll,
  parent,
  parents,
  closest,
  find,
  children,
  remove,
  add,
  styles
};
Object.keys(Methods).forEach((methodName) => {
  $.fn[methodName] = $.fn[methodName] || Methods[methodName];
});
const Utils = {
  deleteProps(obj) {
    const object = obj;
    Object.keys(object).forEach((key) => {
      try {
        object[key] = null;
      } catch (e) {
      }
      try {
        delete object[key];
      } catch (e) {
      }
    });
  },
  nextTick(callback, delay = 0) {
    return setTimeout(callback, delay);
  },
  now() {
    return Date.now();
  },
  getTranslate(el, axis = "x") {
    let matrix;
    let curTransform;
    let transformMatrix;
    const curStyle = win.getComputedStyle(el, null);
    if (win.WebKitCSSMatrix) {
      curTransform = curStyle.transform || curStyle.webkitTransform;
      if (curTransform.split(",").length > 6) {
        curTransform = curTransform.split(", ").map((a) => a.replace(",", ".")).join(", ");
      }
      transformMatrix = new win.WebKitCSSMatrix(curTransform === "none" ? "" : curTransform);
    } else {
      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,");
      matrix = transformMatrix.toString().split(",");
    }
    if (axis === "x") {
      if (win.WebKitCSSMatrix)
        curTransform = transformMatrix.m41;
      else if (matrix.length === 16)
        curTransform = parseFloat(matrix[12]);
      else
        curTransform = parseFloat(matrix[4]);
    }
    if (axis === "y") {
      if (win.WebKitCSSMatrix)
        curTransform = transformMatrix.m42;
      else if (matrix.length === 16)
        curTransform = parseFloat(matrix[13]);
      else
        curTransform = parseFloat(matrix[5]);
    }
    return curTransform || 0;
  },
  parseUrlQuery(url) {
    const query = {};
    let urlToParse = url || win.location.href;
    let i;
    let params;
    let param;
    let length;
    if (typeof urlToParse === "string" && urlToParse.length) {
      urlToParse = urlToParse.indexOf("?") > -1 ? urlToParse.replace(/\S*\?/, "") : "";
      params = urlToParse.split("&").filter((paramsPart) => paramsPart !== "");
      length = params.length;
      for (i = 0; i < length; i += 1) {
        param = params[i].replace(/#\S+/g, "").split("=");
        query[decodeURIComponent(param[0])] = typeof param[1] === "undefined" ? void 0 : decodeURIComponent(param[1]) || "";
      }
    }
    return query;
  },
  isObject(o) {
    return typeof o === "object" && o !== null && o.constructor && o.constructor === Object;
  },
  extend(...args) {
    const to = Object(args[0]);
    for (let i = 1; i < args.length; i += 1) {
      const nextSource = args[i];
      if (nextSource !== void 0 && nextSource !== null) {
        const keysArray = Object.keys(Object(nextSource));
        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
          const nextKey = keysArray[nextIndex];
          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
          if (desc !== void 0 && desc.enumerable) {
            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
              Utils.extend(to[nextKey], nextSource[nextKey]);
            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
              to[nextKey] = {};
              Utils.extend(to[nextKey], nextSource[nextKey]);
            } else {
              to[nextKey] = nextSource[nextKey];
            }
          }
        }
      }
    }
    return to;
  }
};
const Support = function Support2() {
  const testDiv = doc.createElement("div");
  return {
    touch: win.Modernizr && win.Modernizr.touch === true || function checkTouch() {
      return !!(win.navigator.maxTouchPoints > 0 || "ontouchstart" in win || win.DocumentTouch && doc instanceof win.DocumentTouch);
    }(),
    pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent || "maxTouchPoints" in win.navigator && win.navigator.maxTouchPoints > 0),
    prefixedPointerEvents: !!win.navigator.msPointerEnabled,
    transition: function checkTransition() {
      const style2 = testDiv.style;
      return "transition" in style2 || "webkitTransition" in style2 || "MozTransition" in style2;
    }(),
    transforms3d: win.Modernizr && win.Modernizr.csstransforms3d === true || function checkTransforms3d() {
      const style2 = testDiv.style;
      return "webkitPerspective" in style2 || "MozPerspective" in style2 || "OPerspective" in style2 || "MsPerspective" in style2 || "perspective" in style2;
    }(),
    flexbox: function checkFlexbox() {
      const style2 = testDiv.style;
      const styles2 = "alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient".split(" ");
      for (let i = 0; i < styles2.length; i += 1) {
        if (styles2[i] in style2)
          return true;
      }
      return false;
    }(),
    observer: function checkObserver() {
      return "MutationObserver" in win || "WebkitMutationObserver" in win;
    }(),
    passiveListener: function checkPassiveListener() {
      let supportsPassive = false;
      try {
        const opts = Object.defineProperty({}, "passive", {
          // eslint-disable-next-line
          get() {
            supportsPassive = true;
          }
        });
        win.addEventListener("testPassiveListener", null, opts);
      } catch (e) {
      }
      return supportsPassive;
    }(),
    gestures: function checkGestures() {
      return "ongesturestart" in win;
    }()
  };
}();
const Browser = function Browser2() {
  function isSafari() {
    const ua = win.navigator.userAgent.toLowerCase();
    return ua.indexOf("safari") >= 0 && ua.indexOf("chrome") < 0 && ua.indexOf("android") < 0;
  }
  return {
    isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g),
    isEdge: !!win.navigator.userAgent.match(/Edge/g),
    isSafari: isSafari(),
    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent)
  };
}();
class SwiperClass {
  constructor(params = {}) {
    const self2 = this;
    self2.params = params;
    self2.eventsListeners = {};
    if (self2.params && self2.params.on) {
      Object.keys(self2.params.on).forEach((eventName) => {
        self2.on(eventName, self2.params.on[eventName]);
      });
    }
  }
  on(events2, handler, priority) {
    const self2 = this;
    if (typeof handler !== "function")
      return self2;
    const method = priority ? "unshift" : "push";
    events2.split(" ").forEach((event) => {
      if (!self2.eventsListeners[event])
        self2.eventsListeners[event] = [];
      self2.eventsListeners[event][method](handler);
    });
    return self2;
  }
  once(events2, handler, priority) {
    const self2 = this;
    if (typeof handler !== "function")
      return self2;
    function onceHandler(...args) {
      handler.apply(self2, args);
      self2.off(events2, onceHandler);
      if (onceHandler.f7proxy) {
        delete onceHandler.f7proxy;
      }
    }
    onceHandler.f7proxy = handler;
    return self2.on(events2, onceHandler, priority);
  }
  off(events2, handler) {
    const self2 = this;
    if (!self2.eventsListeners)
      return self2;
    events2.split(" ").forEach((event) => {
      if (typeof handler === "undefined") {
        self2.eventsListeners[event] = [];
      } else if (self2.eventsListeners[event] && self2.eventsListeners[event].length) {
        self2.eventsListeners[event].forEach((eventHandler, index2) => {
          if (eventHandler === handler || eventHandler.f7proxy && eventHandler.f7proxy === handler) {
            self2.eventsListeners[event].splice(index2, 1);
          }
        });
      }
    });
    return self2;
  }
  emit(...args) {
    const self2 = this;
    if (!self2.eventsListeners)
      return self2;
    let events2;
    let data2;
    let context;
    if (typeof args[0] === "string" || Array.isArray(args[0])) {
      events2 = args[0];
      data2 = args.slice(1, args.length);
      context = self2;
    } else {
      events2 = args[0].events;
      data2 = args[0].data;
      context = args[0].context || self2;
    }
    const eventsArray = Array.isArray(events2) ? events2 : events2.split(" ");
    eventsArray.forEach((event) => {
      if (self2.eventsListeners && self2.eventsListeners[event]) {
        const handlers = [];
        self2.eventsListeners[event].forEach((eventHandler) => {
          handlers.push(eventHandler);
        });
        handlers.forEach((eventHandler) => {
          eventHandler.apply(context, data2);
        });
      }
    });
    return self2;
  }
  useModulesParams(instanceParams) {
    const instance = this;
    if (!instance.modules)
      return;
    Object.keys(instance.modules).forEach((moduleName) => {
      const module2 = instance.modules[moduleName];
      if (module2.params) {
        Utils.extend(instanceParams, module2.params);
      }
    });
  }
  useModules(modulesParams = {}) {
    const instance = this;
    if (!instance.modules)
      return;
    Object.keys(instance.modules).forEach((moduleName) => {
      const module2 = instance.modules[moduleName];
      const moduleParams = modulesParams[moduleName] || {};
      if (module2.instance) {
        Object.keys(module2.instance).forEach((modulePropName) => {
          const moduleProp = module2.instance[modulePropName];
          if (typeof moduleProp === "function") {
            instance[modulePropName] = moduleProp.bind(instance);
          } else {
            instance[modulePropName] = moduleProp;
          }
        });
      }
      if (module2.on && instance.on) {
        Object.keys(module2.on).forEach((moduleEventName) => {
          instance.on(moduleEventName, module2.on[moduleEventName]);
        });
      }
      if (module2.create) {
        module2.create.bind(instance)(moduleParams);
      }
    });
  }
  static set components(components2) {
    const Class = this;
    if (!Class.use)
      return;
    Class.use(components2);
  }
  static installModule(module2, ...params) {
    const Class = this;
    if (!Class.prototype.modules)
      Class.prototype.modules = {};
    const name = module2.name || `${Object.keys(Class.prototype.modules).length}_${Utils.now()}`;
    Class.prototype.modules[name] = module2;
    if (module2.proto) {
      Object.keys(module2.proto).forEach((key) => {
        Class.prototype[key] = module2.proto[key];
      });
    }
    if (module2.static) {
      Object.keys(module2.static).forEach((key) => {
        Class[key] = module2.static[key];
      });
    }
    if (module2.install) {
      module2.install.apply(Class, params);
    }
    return Class;
  }
  static use(module2, ...params) {
    const Class = this;
    if (Array.isArray(module2)) {
      module2.forEach((m) => Class.installModule(m));
      return Class;
    }
    return Class.installModule(module2, ...params);
  }
}
function updateSize() {
  const swiper2 = this;
  let width;
  let height;
  const $el = swiper2.$el;
  if (typeof swiper2.params.width !== "undefined") {
    width = swiper2.params.width;
  } else {
    width = $el[0].clientWidth;
  }
  if (typeof swiper2.params.height !== "undefined") {
    height = swiper2.params.height;
  } else {
    height = $el[0].clientHeight;
  }
  if (width === 0 && swiper2.isHorizontal() || height === 0 && swiper2.isVertical()) {
    return;
  }
  width = width - parseInt($el.css("padding-left"), 10) - parseInt($el.css("padding-right"), 10);
  height = height - parseInt($el.css("padding-top"), 10) - parseInt($el.css("padding-bottom"), 10);
  Utils.extend(swiper2, {
    width,
    height,
    size: swiper2.isHorizontal() ? width : height
  });
}
function updateSlides() {
  const swiper2 = this;
  const params = swiper2.params;
  const {
    $wrapperEl,
    size: swiperSize,
    rtlTranslate: rtl,
    wrongRTL
  } = swiper2;
  const isVirtual = swiper2.virtual && params.virtual.enabled;
  const previousSlidesLength = isVirtual ? swiper2.virtual.slides.length : swiper2.slides.length;
  const slides = $wrapperEl.children(`.${swiper2.params.slideClass}`);
  const slidesLength = isVirtual ? swiper2.virtual.slides.length : slides.length;
  let snapGrid = [];
  const slidesGrid = [];
  const slidesSizesGrid = [];
  let offsetBefore = params.slidesOffsetBefore;
  if (typeof offsetBefore === "function") {
    offsetBefore = params.slidesOffsetBefore.call(swiper2);
  }
  let offsetAfter = params.slidesOffsetAfter;
  if (typeof offsetAfter === "function") {
    offsetAfter = params.slidesOffsetAfter.call(swiper2);
  }
  const previousSnapGridLength = swiper2.snapGrid.length;
  const previousSlidesGridLength = swiper2.snapGrid.length;
  let spaceBetween = params.spaceBetween;
  let slidePosition = -offsetBefore;
  let prevSlideSize = 0;
  let index2 = 0;
  if (typeof swiperSize === "undefined") {
    return;
  }
  if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) {
    spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiperSize;
  }
  swiper2.virtualSize = -spaceBetween;
  if (rtl)
    slides.css({ marginLeft: "", marginTop: "" });
  else
    slides.css({ marginRight: "", marginBottom: "" });
  let slidesNumberEvenToRows;
  if (params.slidesPerColumn > 1) {
    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper2.params.slidesPerColumn) {
      slidesNumberEvenToRows = slidesLength;
    } else {
      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
    }
    if (params.slidesPerView !== "auto" && params.slidesPerColumnFill === "row") {
      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
    }
  }
  let slideSize;
  const slidesPerColumn = params.slidesPerColumn;
  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
  for (let i = 0; i < slidesLength; i += 1) {
    slideSize = 0;
    const slide2 = slides.eq(i);
    if (params.slidesPerColumn > 1) {
      let newSlideOrderIndex;
      let column;
      let row;
      if (params.slidesPerColumnFill === "column" || params.slidesPerColumnFill === "row" && params.slidesPerGroup > 1) {
        if (params.slidesPerColumnFill === "column") {
          column = Math.floor(i / slidesPerColumn);
          row = i - column * slidesPerColumn;
          if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {
            row += 1;
            if (row >= slidesPerColumn) {
              row = 0;
              column += 1;
            }
          }
        } else {
          const groupIndex = Math.floor(i / params.slidesPerGroup);
          row = Math.floor(i / params.slidesPerView) - groupIndex * params.slidesPerColumn;
          column = i - row * params.slidesPerView - groupIndex * params.slidesPerView;
        }
        newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;
        slide2.css({
          "-webkit-box-ordinal-group": newSlideOrderIndex,
          "-moz-box-ordinal-group": newSlideOrderIndex,
          "-ms-flex-order": newSlideOrderIndex,
          "-webkit-order": newSlideOrderIndex,
          order: newSlideOrderIndex
        });
      } else {
        row = Math.floor(i / slidesPerRow);
        column = i - row * slidesPerRow;
      }
      slide2.css(
        `margin-${swiper2.isHorizontal() ? "top" : "left"}`,
        row !== 0 && params.spaceBetween && `${params.spaceBetween}px`
      ).attr("data-swiper-column", column).attr("data-swiper-row", row);
    }
    if (slide2.css("display") === "none")
      continue;
    if (params.slidesPerView === "auto") {
      const slideStyles = win.getComputedStyle(slide2[0], null);
      const currentTransform = slide2[0].style.transform;
      const currentWebKitTransform = slide2[0].style.webkitTransform;
      if (currentTransform) {
        slide2[0].style.transform = "none";
      }
      if (currentWebKitTransform) {
        slide2[0].style.webkitTransform = "none";
      }
      if (params.roundLengths) {
        slideSize = swiper2.isHorizontal() ? slide2.outerWidth(true) : slide2.outerHeight(true);
      } else {
        if (swiper2.isHorizontal()) {
          const width = parseFloat(slideStyles.getPropertyValue("width"));
          const paddingLeft = parseFloat(slideStyles.getPropertyValue("padding-left"));
          const paddingRight = parseFloat(slideStyles.getPropertyValue("padding-right"));
          const marginLeft = parseFloat(slideStyles.getPropertyValue("margin-left"));
          const marginRight = parseFloat(slideStyles.getPropertyValue("margin-right"));
          const boxSizing = slideStyles.getPropertyValue("box-sizing");
          if (boxSizing && boxSizing === "border-box" && !Browser.isIE) {
            slideSize = width + marginLeft + marginRight;
          } else {
            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
          }
        } else {
          const height = parseFloat(slideStyles.getPropertyValue("height"));
          const paddingTop = parseFloat(slideStyles.getPropertyValue("padding-top"));
          const paddingBottom = parseFloat(slideStyles.getPropertyValue("padding-bottom"));
          const marginTop = parseFloat(slideStyles.getPropertyValue("margin-top"));
          const marginBottom = parseFloat(slideStyles.getPropertyValue("margin-bottom"));
          const boxSizing = slideStyles.getPropertyValue("box-sizing");
          if (boxSizing && boxSizing === "border-box" && !Browser.isIE) {
            slideSize = height + marginTop + marginBottom;
          } else {
            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
          }
        }
      }
      if (currentTransform) {
        slide2[0].style.transform = currentTransform;
      }
      if (currentWebKitTransform) {
        slide2[0].style.webkitTransform = currentWebKitTransform;
      }
      if (params.roundLengths)
        slideSize = Math.floor(slideSize);
    } else {
      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
      if (params.roundLengths)
        slideSize = Math.floor(slideSize);
      if (slides[i]) {
        if (swiper2.isHorizontal()) {
          slides[i].style.width = `${slideSize}px`;
        } else {
          slides[i].style.height = `${slideSize}px`;
        }
      }
    }
    if (slides[i]) {
      slides[i].swiperSlideSize = slideSize;
    }
    slidesSizesGrid.push(slideSize);
    if (params.centeredSlides) {
      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
      if (prevSlideSize === 0 && i !== 0)
        slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
      if (i === 0)
        slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
      if (Math.abs(slidePosition) < 1 / 1e3)
        slidePosition = 0;
      if (params.roundLengths)
        slidePosition = Math.floor(slidePosition);
      if (index2 % params.slidesPerGroup === 0)
        snapGrid.push(slidePosition);
      slidesGrid.push(slidePosition);
    } else {
      if (params.roundLengths)
        slidePosition = Math.floor(slidePosition);
      if (index2 % params.slidesPerGroup === 0)
        snapGrid.push(slidePosition);
      slidesGrid.push(slidePosition);
      slidePosition = slidePosition + slideSize + spaceBetween;
    }
    swiper2.virtualSize += slideSize + spaceBetween;
    prevSlideSize = slideSize;
    index2 += 1;
  }
  swiper2.virtualSize = Math.max(swiper2.virtualSize, swiperSize) + offsetAfter;
  let newSlidesGrid;
  if (rtl && wrongRTL && (params.effect === "slide" || params.effect === "coverflow")) {
    $wrapperEl.css({ width: `${swiper2.virtualSize + params.spaceBetween}px` });
  }
  if (!Support.flexbox || params.setWrapperSize) {
    if (swiper2.isHorizontal())
      $wrapperEl.css({ width: `${swiper2.virtualSize + params.spaceBetween}px` });
    else
      $wrapperEl.css({ height: `${swiper2.virtualSize + params.spaceBetween}px` });
  }
  if (params.slidesPerColumn > 1) {
    swiper2.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
    swiper2.virtualSize = Math.ceil(swiper2.virtualSize / params.slidesPerColumn) - params.spaceBetween;
    if (swiper2.isHorizontal())
      $wrapperEl.css({ width: `${swiper2.virtualSize + params.spaceBetween}px` });
    else
      $wrapperEl.css({ height: `${swiper2.virtualSize + params.spaceBetween}px` });
    if (params.centeredSlides) {
      newSlidesGrid = [];
      for (let i = 0; i < snapGrid.length; i += 1) {
        let slidesGridItem = snapGrid[i];
        if (params.roundLengths)
          slidesGridItem = Math.floor(slidesGridItem);
        if (snapGrid[i] < swiper2.virtualSize + snapGrid[0])
          newSlidesGrid.push(slidesGridItem);
      }
      snapGrid = newSlidesGrid;
    }
  }
  if (!params.centeredSlides) {
    newSlidesGrid = [];
    for (let i = 0; i < snapGrid.length; i += 1) {
      let slidesGridItem = snapGrid[i];
      if (params.roundLengths)
        slidesGridItem = Math.floor(slidesGridItem);
      if (snapGrid[i] <= swiper2.virtualSize - swiperSize) {
        newSlidesGrid.push(slidesGridItem);
      }
    }
    snapGrid = newSlidesGrid;
    if (Math.floor(swiper2.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
      snapGrid.push(swiper2.virtualSize - swiperSize);
    }
  }
  if (snapGrid.length === 0)
    snapGrid = [0];
  if (params.spaceBetween !== 0) {
    if (swiper2.isHorizontal()) {
      if (rtl)
        slides.css({ marginLeft: `${spaceBetween}px` });
      else
        slides.css({ marginRight: `${spaceBetween}px` });
    } else
      slides.css({ marginBottom: `${spaceBetween}px` });
  }
  if (params.centerInsufficientSlides) {
    let allSlidesSize = 0;
    slidesSizesGrid.forEach((slideSizeValue) => {
      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
    });
    allSlidesSize -= params.spaceBetween;
    if (allSlidesSize < swiperSize) {
      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
      snapGrid.forEach((snap, snapIndex) => {
        snapGrid[snapIndex] = snap - allSlidesOffset;
      });
      slidesGrid.forEach((snap, snapIndex) => {
        slidesGrid[snapIndex] = snap + allSlidesOffset;
      });
    }
  }
  Utils.extend(swiper2, {
    slides,
    snapGrid,
    slidesGrid,
    slidesSizesGrid
  });
  if (slidesLength !== previousSlidesLength) {
    swiper2.emit("slidesLengthChange");
  }
  if (snapGrid.length !== previousSnapGridLength) {
    if (swiper2.params.watchOverflow)
      swiper2.checkOverflow();
    swiper2.emit("snapGridLengthChange");
  }
  if (slidesGrid.length !== previousSlidesGridLength) {
    swiper2.emit("slidesGridLengthChange");
  }
  if (params.watchSlidesProgress || params.watchSlidesVisibility) {
    swiper2.updateSlidesOffset();
  }
}
function updateAutoHeight(speed) {
  const swiper2 = this;
  const activeSlides = [];
  let newHeight = 0;
  let i;
  if (typeof speed === "number") {
    swiper2.setTransition(speed);
  } else if (speed === true) {
    swiper2.setTransition(swiper2.params.speed);
  }
  if (swiper2.params.slidesPerView !== "auto" && swiper2.params.slidesPerView > 1) {
    for (i = 0; i < Math.ceil(swiper2.params.slidesPerView); i += 1) {
      const index2 = swiper2.activeIndex + i;
      if (index2 > swiper2.slides.length)
        break;
      activeSlides.push(swiper2.slides.eq(index2)[0]);
    }
  } else {
    activeSlides.push(swiper2.slides.eq(swiper2.activeIndex)[0]);
  }
  for (i = 0; i < activeSlides.length; i += 1) {
    if (typeof activeSlides[i] !== "undefined") {
      const height = activeSlides[i].offsetHeight;
      newHeight = height > newHeight ? height : newHeight;
    }
  }
  if (newHeight)
    swiper2.$wrapperEl.css("height", `${newHeight}px`);
}
function updateSlidesOffset() {
  const swiper2 = this;
  const slides = swiper2.slides;
  for (let i = 0; i < slides.length; i += 1) {
    slides[i].swiperSlideOffset = swiper2.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
  }
}
function updateSlidesProgress(translate2 = this && this.translate || 0) {
  const swiper2 = this;
  const params = swiper2.params;
  const { slides, rtlTranslate: rtl } = swiper2;
  if (slides.length === 0)
    return;
  if (typeof slides[0].swiperSlideOffset === "undefined")
    swiper2.updateSlidesOffset();
  let offsetCenter = -translate2;
  if (rtl)
    offsetCenter = translate2;
  slides.removeClass(params.slideVisibleClass);
  swiper2.visibleSlidesIndexes = [];
  swiper2.visibleSlides = [];
  for (let i = 0; i < slides.length; i += 1) {
    const slide2 = slides[i];
    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper2.minTranslate() : 0) - slide2.swiperSlideOffset) / (slide2.swiperSlideSize + params.spaceBetween);
    if (params.watchSlidesVisibility) {
      const slideBefore = -(offsetCenter - slide2.swiperSlideOffset);
      const slideAfter = slideBefore + swiper2.slidesSizesGrid[i];
      const isVisible = slideBefore >= 0 && slideBefore < swiper2.size - 1 || slideAfter > 1 && slideAfter <= swiper2.size || slideBefore <= 0 && slideAfter >= swiper2.size;
      if (isVisible) {
        swiper2.visibleSlides.push(slide2);
        swiper2.visibleSlidesIndexes.push(i);
        slides.eq(i).addClass(params.slideVisibleClass);
      }
    }
    slide2.progress = rtl ? -slideProgress : slideProgress;
  }
  swiper2.visibleSlides = $(swiper2.visibleSlides);
}
function updateProgress(translate2 = this && this.translate || 0) {
  const swiper2 = this;
  const params = swiper2.params;
  const translatesDiff = swiper2.maxTranslate() - swiper2.minTranslate();
  let { progress, isBeginning, isEnd } = swiper2;
  const wasBeginning = isBeginning;
  const wasEnd = isEnd;
  if (translatesDiff === 0) {
    progress = 0;
    isBeginning = true;
    isEnd = true;
  } else {
    progress = (translate2 - swiper2.minTranslate()) / translatesDiff;
    isBeginning = progress <= 0;
    isEnd = progress >= 1;
  }
  Utils.extend(swiper2, {
    progress,
    isBeginning,
    isEnd
  });
  if (params.watchSlidesProgress || params.watchSlidesVisibility)
    swiper2.updateSlidesProgress(translate2);
  if (isBeginning && !wasBeginning) {
    swiper2.emit("reachBeginning toEdge");
  }
  if (isEnd && !wasEnd) {
    swiper2.emit("reachEnd toEdge");
  }
  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
    swiper2.emit("fromEdge");
  }
  swiper2.emit("progress", progress);
}
function updateSlidesClasses() {
  const swiper2 = this;
  const {
    slides,
    params,
    $wrapperEl,
    activeIndex,
    realIndex
  } = swiper2;
  const isVirtual = swiper2.virtual && params.virtual.enabled;
  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
  let activeSlide;
  if (isVirtual) {
    activeSlide = swiper2.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
  } else {
    activeSlide = slides.eq(activeIndex);
  }
  activeSlide.addClass(params.slideActiveClass);
  if (params.loop) {
    if (activeSlide.hasClass(params.slideDuplicateClass)) {
      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
    } else {
      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
    }
  }
  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
  if (params.loop && nextSlide.length === 0) {
    nextSlide = slides.eq(0);
    nextSlide.addClass(params.slideNextClass);
  }
  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
  if (params.loop && prevSlide.length === 0) {
    prevSlide = slides.eq(-1);
    prevSlide.addClass(params.slidePrevClass);
  }
  if (params.loop) {
    if (nextSlide.hasClass(params.slideDuplicateClass)) {
      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr("data-swiper-slide-index")}"]`).addClass(params.slideDuplicateNextClass);
    } else {
      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr("data-swiper-slide-index")}"]`).addClass(params.slideDuplicateNextClass);
    }
    if (prevSlide.hasClass(params.slideDuplicateClass)) {
      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr("data-swiper-slide-index")}"]`).addClass(params.slideDuplicatePrevClass);
    } else {
      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr("data-swiper-slide-index")}"]`).addClass(params.slideDuplicatePrevClass);
    }
  }
}
function updateActiveIndex(newActiveIndex) {
  const swiper2 = this;
  const translate2 = swiper2.rtlTranslate ? swiper2.translate : -swiper2.translate;
  const {
    slidesGrid,
    snapGrid,
    params,
    activeIndex: previousIndex,
    realIndex: previousRealIndex,
    snapIndex: previousSnapIndex
  } = swiper2;
  let activeIndex = newActiveIndex;
  let snapIndex;
  if (typeof activeIndex === "undefined") {
    for (let i = 0; i < slidesGrid.length; i += 1) {
      if (typeof slidesGrid[i + 1] !== "undefined") {
        if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
          activeIndex = i;
        } else if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1]) {
          activeIndex = i + 1;
        }
      } else if (translate2 >= slidesGrid[i]) {
        activeIndex = i;
      }
    }
    if (params.normalizeSlideIndex) {
      if (activeIndex < 0 || typeof activeIndex === "undefined")
        activeIndex = 0;
    }
  }
  if (snapGrid.indexOf(translate2) >= 0) {
    snapIndex = snapGrid.indexOf(translate2);
  } else {
    snapIndex = Math.floor(activeIndex / params.slidesPerGroup);
  }
  if (snapIndex >= snapGrid.length)
    snapIndex = snapGrid.length - 1;
  if (activeIndex === previousIndex) {
    if (snapIndex !== previousSnapIndex) {
      swiper2.snapIndex = snapIndex;
      swiper2.emit("snapIndexChange");
    }
    return;
  }
  const realIndex = parseInt(swiper2.slides.eq(activeIndex).attr("data-swiper-slide-index") || activeIndex, 10);
  Utils.extend(swiper2, {
    snapIndex,
    realIndex,
    previousIndex,
    activeIndex
  });
  swiper2.emit("activeIndexChange");
  swiper2.emit("snapIndexChange");
  if (previousRealIndex !== realIndex) {
    swiper2.emit("realIndexChange");
  }
  if (swiper2.initialized || swiper2.runCallbacksOnInit) {
    swiper2.emit("slideChange");
  }
}
function updateClickedSlide(e) {
  const swiper2 = this;
  const params = swiper2.params;
  const slide2 = $(e.target).closest(`.${params.slideClass}`)[0];
  let slideFound = false;
  if (slide2) {
    for (let i = 0; i < swiper2.slides.length; i += 1) {
      if (swiper2.slides[i] === slide2)
        slideFound = true;
    }
  }
  if (slide2 && slideFound) {
    swiper2.clickedSlide = slide2;
    if (swiper2.virtual && swiper2.params.virtual.enabled) {
      swiper2.clickedIndex = parseInt($(slide2).attr("data-swiper-slide-index"), 10);
    } else {
      swiper2.clickedIndex = $(slide2).index();
    }
  } else {
    swiper2.clickedSlide = void 0;
    swiper2.clickedIndex = void 0;
    return;
  }
  if (params.slideToClickedSlide && swiper2.clickedIndex !== void 0 && swiper2.clickedIndex !== swiper2.activeIndex) {
    swiper2.slideToClickedSlide();
  }
}
var update = {
  updateSize,
  updateSlides,
  updateAutoHeight,
  updateSlidesOffset,
  updateSlidesProgress,
  updateProgress,
  updateSlidesClasses,
  updateActiveIndex,
  updateClickedSlide
};
function getTranslate(axis = this.isHorizontal() ? "x" : "y") {
  const swiper2 = this;
  const {
    params,
    rtlTranslate: rtl,
    translate: translate2,
    $wrapperEl
  } = swiper2;
  if (params.virtualTranslate) {
    return rtl ? -translate2 : translate2;
  }
  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
  if (rtl)
    currentTranslate = -currentTranslate;
  return currentTranslate || 0;
}
function setTranslate(translate2, byController) {
  const swiper2 = this;
  const {
    rtlTranslate: rtl,
    params,
    $wrapperEl,
    progress
  } = swiper2;
  let x = 0;
  let y = 0;
  const z = 0;
  if (swiper2.isHorizontal()) {
    x = rtl ? -translate2 : translate2;
  } else {
    y = translate2;
  }
  if (params.roundLengths) {
    x = Math.floor(x);
    y = Math.floor(y);
  }
  if (!params.virtualTranslate) {
    if (Support.transforms3d)
      $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);
    else
      $wrapperEl.transform(`translate(${x}px, ${y}px)`);
  }
  swiper2.previousTranslate = swiper2.translate;
  swiper2.translate = swiper2.isHorizontal() ? x : y;
  let newProgress;
  const translatesDiff = swiper2.maxTranslate() - swiper2.minTranslate();
  if (translatesDiff === 0) {
    newProgress = 0;
  } else {
    newProgress = (translate2 - swiper2.minTranslate()) / translatesDiff;
  }
  if (newProgress !== progress) {
    swiper2.updateProgress(translate2);
  }
  swiper2.emit("setTranslate", swiper2.translate, byController);
}
function minTranslate() {
  return -this.snapGrid[0];
}
function maxTranslate() {
  return -this.snapGrid[this.snapGrid.length - 1];
}
var translate = {
  getTranslate,
  setTranslate,
  minTranslate,
  maxTranslate
};
function setTransition(duration, byController) {
  const swiper2 = this;
  swiper2.$wrapperEl.transition(duration);
  swiper2.emit("setTransition", duration, byController);
}
function transitionStart(runCallbacks = true, direction) {
  const swiper2 = this;
  const { activeIndex, params, previousIndex } = swiper2;
  if (params.autoHeight) {
    swiper2.updateAutoHeight();
  }
  let dir = direction;
  if (!dir) {
    if (activeIndex > previousIndex)
      dir = "next";
    else if (activeIndex < previousIndex)
      dir = "prev";
    else
      dir = "reset";
  }
  swiper2.emit("transitionStart");
  if (runCallbacks && activeIndex !== previousIndex) {
    if (dir === "reset") {
      swiper2.emit("slideResetTransitionStart");
      return;
    }
    swiper2.emit("slideChangeTransitionStart");
    if (dir === "next") {
      swiper2.emit("slideNextTransitionStart");
    } else {
      swiper2.emit("slidePrevTransitionStart");
    }
  }
}
function transitionEnd(runCallbacks = true, direction) {
  const swiper2 = this;
  const { activeIndex, previousIndex } = swiper2;
  swiper2.animating = false;
  swiper2.setTransition(0);
  let dir = direction;
  if (!dir) {
    if (activeIndex > previousIndex)
      dir = "next";
    else if (activeIndex < previousIndex)
      dir = "prev";
    else
      dir = "reset";
  }
  swiper2.emit("transitionEnd");
  if (runCallbacks && activeIndex !== previousIndex) {
    if (dir === "reset") {
      swiper2.emit("slideResetTransitionEnd");
      return;
    }
    swiper2.emit("slideChangeTransitionEnd");
    if (dir === "next") {
      swiper2.emit("slideNextTransitionEnd");
    } else {
      swiper2.emit("slidePrevTransitionEnd");
    }
  }
}
var transition = {
  setTransition,
  transitionStart,
  transitionEnd
};
function slideTo(index2 = 0, speed = this.params.speed, runCallbacks = true, internal) {
  const swiper2 = this;
  let slideIndex = index2;
  if (slideIndex < 0)
    slideIndex = 0;
  const {
    params,
    snapGrid,
    slidesGrid,
    previousIndex,
    activeIndex,
    rtlTranslate: rtl
  } = swiper2;
  if (swiper2.animating && params.preventInteractionOnTransition) {
    return false;
  }
  let snapIndex = Math.floor(slideIndex / params.slidesPerGroup);
  if (snapIndex >= snapGrid.length)
    snapIndex = snapGrid.length - 1;
  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
    swiper2.emit("beforeSlideChangeStart");
  }
  const translate2 = -snapGrid[snapIndex];
  swiper2.updateProgress(translate2);
  if (params.normalizeSlideIndex) {
    for (let i = 0; i < slidesGrid.length; i += 1) {
      if (-Math.floor(translate2 * 100) >= Math.floor(slidesGrid[i] * 100)) {
        slideIndex = i;
      }
    }
  }
  if (swiper2.initialized && slideIndex !== activeIndex) {
    if (!swiper2.allowSlideNext && translate2 < swiper2.translate && translate2 < swiper2.minTranslate()) {
      return false;
    }
    if (!swiper2.allowSlidePrev && translate2 > swiper2.translate && translate2 > swiper2.maxTranslate()) {
      if ((activeIndex || 0) !== slideIndex)
        return false;
    }
  }
  let direction;
  if (slideIndex > activeIndex)
    direction = "next";
  else if (slideIndex < activeIndex)
    direction = "prev";
  else
    direction = "reset";
  if (rtl && -translate2 === swiper2.translate || !rtl && translate2 === swiper2.translate) {
    swiper2.updateActiveIndex(slideIndex);
    if (params.autoHeight) {
      swiper2.updateAutoHeight();
    }
    swiper2.updateSlidesClasses();
    if (params.effect !== "slide") {
      swiper2.setTranslate(translate2);
    }
    if (direction !== "reset") {
      swiper2.transitionStart(runCallbacks, direction);
      swiper2.transitionEnd(runCallbacks, direction);
    }
    return false;
  }
  if (speed === 0 || !Support.transition) {
    swiper2.setTransition(0);
    swiper2.setTranslate(translate2);
    swiper2.updateActiveIndex(slideIndex);
    swiper2.updateSlidesClasses();
    swiper2.emit("beforeTransitionStart", speed, internal);
    swiper2.transitionStart(runCallbacks, direction);
    swiper2.transitionEnd(runCallbacks, direction);
  } else {
    swiper2.setTransition(speed);
    swiper2.setTranslate(translate2);
    swiper2.updateActiveIndex(slideIndex);
    swiper2.updateSlidesClasses();
    swiper2.emit("beforeTransitionStart", speed, internal);
    swiper2.transitionStart(runCallbacks, direction);
    if (!swiper2.animating) {
      swiper2.animating = true;
      if (!swiper2.onSlideToWrapperTransitionEnd) {
        swiper2.onSlideToWrapperTransitionEnd = function transitionEnd2(e) {
          if (!swiper2 || swiper2.destroyed)
            return;
          if (e.target !== this)
            return;
          swiper2.$wrapperEl[0].removeEventListener("transitionend", swiper2.onSlideToWrapperTransitionEnd);
          swiper2.$wrapperEl[0].removeEventListener("webkitTransitionEnd", swiper2.onSlideToWrapperTransitionEnd);
          swiper2.onSlideToWrapperTransitionEnd = null;
          delete swiper2.onSlideToWrapperTransitionEnd;
          swiper2.transitionEnd(runCallbacks, direction);
        };
      }
      swiper2.$wrapperEl[0].addEventListener("transitionend", swiper2.onSlideToWrapperTransitionEnd);
      swiper2.$wrapperEl[0].addEventListener("webkitTransitionEnd", swiper2.onSlideToWrapperTransitionEnd);
    }
  }
  return true;
}
function slideToLoop(index2 = 0, speed = this.params.speed, runCallbacks = true, internal) {
  const swiper2 = this;
  let newIndex = index2;
  if (swiper2.params.loop) {
    newIndex += swiper2.loopedSlides;
  }
  return swiper2.slideTo(newIndex, speed, runCallbacks, internal);
}
function slideNext(speed = this.params.speed, runCallbacks = true, internal) {
  const swiper2 = this;
  const { params, animating } = swiper2;
  if (params.loop) {
    if (animating)
      return false;
    swiper2.loopFix();
    swiper2._clientLeft = swiper2.$wrapperEl[0].clientLeft;
    return swiper2.slideTo(swiper2.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
  }
  return swiper2.slideTo(swiper2.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
}
function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {
  const swiper2 = this;
  const {
    params,
    animating,
    snapGrid,
    slidesGrid,
    rtlTranslate
  } = swiper2;
  if (params.loop) {
    if (animating)
      return false;
    swiper2.loopFix();
    swiper2._clientLeft = swiper2.$wrapperEl[0].clientLeft;
  }
  const translate2 = rtlTranslate ? swiper2.translate : -swiper2.translate;
  function normalize(val) {
    if (val < 0)
      return -Math.floor(Math.abs(val));
    return Math.floor(val);
  }
  const normalizedTranslate = normalize(translate2);
  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));
  slidesGrid.map((val) => normalize(val));
  snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
  const prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
  let prevIndex;
  if (typeof prevSnap !== "undefined") {
    prevIndex = slidesGrid.indexOf(prevSnap);
    if (prevIndex < 0)
      prevIndex = swiper2.activeIndex - 1;
  }
  return swiper2.slideTo(prevIndex, speed, runCallbacks, internal);
}
function slideReset(speed = this.params.speed, runCallbacks = true, internal) {
  const swiper2 = this;
  return swiper2.slideTo(swiper2.activeIndex, speed, runCallbacks, internal);
}
function slideToClosest(speed = this.params.speed, runCallbacks = true, internal) {
  const swiper2 = this;
  let index2 = swiper2.activeIndex;
  const snapIndex = Math.floor(index2 / swiper2.params.slidesPerGroup);
  if (snapIndex < swiper2.snapGrid.length - 1) {
    const translate2 = swiper2.rtlTranslate ? swiper2.translate : -swiper2.translate;
    const currentSnap = swiper2.snapGrid[snapIndex];
    const nextSnap = swiper2.snapGrid[snapIndex + 1];
    if (translate2 - currentSnap > (nextSnap - currentSnap) / 2) {
      index2 = swiper2.params.slidesPerGroup;
    }
  }
  return swiper2.slideTo(index2, speed, runCallbacks, internal);
}
function slideToClickedSlide() {
  const swiper2 = this;
  const { params, $wrapperEl } = swiper2;
  const slidesPerView = params.slidesPerView === "auto" ? swiper2.slidesPerViewDynamic() : params.slidesPerView;
  let slideToIndex = swiper2.clickedIndex;
  let realIndex;
  if (params.loop) {
    if (swiper2.animating)
      return;
    realIndex = parseInt($(swiper2.clickedSlide).attr("data-swiper-slide-index"), 10);
    if (params.centeredSlides) {
      if (slideToIndex < swiper2.loopedSlides - slidesPerView / 2 || slideToIndex > swiper2.slides.length - swiper2.loopedSlides + slidesPerView / 2) {
        swiper2.loopFix();
        slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
        Utils.nextTick(() => {
          swiper2.slideTo(slideToIndex);
        });
      } else {
        swiper2.slideTo(slideToIndex);
      }
    } else if (slideToIndex > swiper2.slides.length - slidesPerView) {
      swiper2.loopFix();
      slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
      Utils.nextTick(() => {
        swiper2.slideTo(slideToIndex);
      });
    } else {
      swiper2.slideTo(slideToIndex);
    }
  } else {
    swiper2.slideTo(slideToIndex);
  }
}
var slide = {
  slideTo,
  slideToLoop,
  slideNext,
  slidePrev,
  slideReset,
  slideToClosest,
  slideToClickedSlide
};
function loopCreate() {
  const swiper2 = this;
  const { params, $wrapperEl } = swiper2;
  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();
  let slides = $wrapperEl.children(`.${params.slideClass}`);
  if (params.loopFillGroupWithBlank) {
    const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
    if (blankSlidesNum !== params.slidesPerGroup) {
      for (let i = 0; i < blankSlidesNum; i += 1) {
        const blankNode = $(doc.createElement("div")).addClass(`${params.slideClass} ${params.slideBlankClass}`);
        $wrapperEl.append(blankNode);
      }
      slides = $wrapperEl.children(`.${params.slideClass}`);
    }
  }
  if (params.slidesPerView === "auto" && !params.loopedSlides)
    params.loopedSlides = slides.length;
  swiper2.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);
  swiper2.loopedSlides += params.loopAdditionalSlides;
  if (swiper2.loopedSlides > slides.length) {
    swiper2.loopedSlides = slides.length;
  }
  const prependSlides = [];
  const appendSlides = [];
  slides.each((index2, el) => {
    const slide2 = $(el);
    if (index2 < swiper2.loopedSlides)
      appendSlides.push(el);
    if (index2 < slides.length && index2 >= slides.length - swiper2.loopedSlides)
      prependSlides.push(el);
    slide2.attr("data-swiper-slide-index", index2);
  });
  for (let i = 0; i < appendSlides.length; i += 1) {
    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
  }
  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {
    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
  }
}
function loopFix() {
  const swiper2 = this;
  const {
    params,
    activeIndex,
    slides,
    loopedSlides,
    allowSlidePrev,
    allowSlideNext,
    snapGrid,
    rtlTranslate: rtl
  } = swiper2;
  let newIndex;
  swiper2.allowSlidePrev = true;
  swiper2.allowSlideNext = true;
  const snapTranslate = -snapGrid[activeIndex];
  const diff = snapTranslate - swiper2.getTranslate();
  if (activeIndex < loopedSlides) {
    newIndex = slides.length - loopedSlides * 3 + activeIndex;
    newIndex += loopedSlides;
    const slideChanged = swiper2.slideTo(newIndex, 0, false, true);
    if (slideChanged && diff !== 0) {
      swiper2.setTranslate((rtl ? -swiper2.translate : swiper2.translate) - diff);
    }
  } else if (params.slidesPerView === "auto" && activeIndex >= loopedSlides * 2 || activeIndex >= slides.length - loopedSlides) {
    newIndex = -slides.length + activeIndex + loopedSlides;
    newIndex += loopedSlides;
    const slideChanged = swiper2.slideTo(newIndex, 0, false, true);
    if (slideChanged && diff !== 0) {
      swiper2.setTranslate((rtl ? -swiper2.translate : swiper2.translate) - diff);
    }
  }
  swiper2.allowSlidePrev = allowSlidePrev;
  swiper2.allowSlideNext = allowSlideNext;
}
function loopDestroy() {
  const swiper2 = this;
  const { $wrapperEl, params, slides } = swiper2;
  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();
  slides.removeAttr("data-swiper-slide-index");
}
var loop = {
  loopCreate,
  loopFix,
  loopDestroy
};
function setGrabCursor(moving) {
  const swiper2 = this;
  if (Support.touch || !swiper2.params.simulateTouch || swiper2.params.watchOverflow && swiper2.isLocked)
    return;
  const el = swiper2.el;
  el.style.cursor = "move";
  el.style.cursor = moving ? "-webkit-grabbing" : "-webkit-grab";
  el.style.cursor = moving ? "-moz-grabbin" : "-moz-grab";
  el.style.cursor = moving ? "grabbing" : "grab";
}
function unsetGrabCursor() {
  const swiper2 = this;
  if (Support.touch || swiper2.params.watchOverflow && swiper2.isLocked)
    return;
  swiper2.el.style.cursor = "";
}
var grabCursor = {
  setGrabCursor,
  unsetGrabCursor
};
function appendSlide(slides) {
  const swiper2 = this;
  const { $wrapperEl, params } = swiper2;
  if (params.loop) {
    swiper2.loopDestroy();
  }
  if (typeof slides === "object" && "length" in slides) {
    for (let i = 0; i < slides.length; i += 1) {
      if (slides[i])
        $wrapperEl.append(slides[i]);
    }
  } else {
    $wrapperEl.append(slides);
  }
  if (params.loop) {
    swiper2.loopCreate();
  }
  if (!(params.observer && Support.observer)) {
    swiper2.update();
  }
}
function prependSlide(slides) {
  const swiper2 = this;
  const { params, $wrapperEl, activeIndex } = swiper2;
  if (params.loop) {
    swiper2.loopDestroy();
  }
  let newActiveIndex = activeIndex + 1;
  if (typeof slides === "object" && "length" in slides) {
    for (let i = 0; i < slides.length; i += 1) {
      if (slides[i])
        $wrapperEl.prepend(slides[i]);
    }
    newActiveIndex = activeIndex + slides.length;
  } else {
    $wrapperEl.prepend(slides);
  }
  if (params.loop) {
    swiper2.loopCreate();
  }
  if (!(params.observer && Support.observer)) {
    swiper2.update();
  }
  swiper2.slideTo(newActiveIndex, 0, false);
}
function addSlide(index2, slides) {
  const swiper2 = this;
  const { $wrapperEl, params, activeIndex } = swiper2;
  let activeIndexBuffer = activeIndex;
  if (params.loop) {
    activeIndexBuffer -= swiper2.loopedSlides;
    swiper2.loopDestroy();
    swiper2.slides = $wrapperEl.children(`.${params.slideClass}`);
  }
  const baseLength = swiper2.slides.length;
  if (index2 <= 0) {
    swiper2.prependSlide(slides);
    return;
  }
  if (index2 >= baseLength) {
    swiper2.appendSlide(slides);
    return;
  }
  let newActiveIndex = activeIndexBuffer > index2 ? activeIndexBuffer + 1 : activeIndexBuffer;
  const slidesBuffer = [];
  for (let i = baseLength - 1; i >= index2; i -= 1) {
    const currentSlide = swiper2.slides.eq(i);
    currentSlide.remove();
    slidesBuffer.unshift(currentSlide);
  }
  if (typeof slides === "object" && "length" in slides) {
    for (let i = 0; i < slides.length; i += 1) {
      if (slides[i])
        $wrapperEl.append(slides[i]);
    }
    newActiveIndex = activeIndexBuffer > index2 ? activeIndexBuffer + slides.length : activeIndexBuffer;
  } else {
    $wrapperEl.append(slides);
  }
  for (let i = 0; i < slidesBuffer.length; i += 1) {
    $wrapperEl.append(slidesBuffer[i]);
  }
  if (params.loop) {
    swiper2.loopCreate();
  }
  if (!(params.observer && Support.observer)) {
    swiper2.update();
  }
  if (params.loop) {
    swiper2.slideTo(newActiveIndex + swiper2.loopedSlides, 0, false);
  } else {
    swiper2.slideTo(newActiveIndex, 0, false);
  }
}
function removeSlide(slidesIndexes) {
  const swiper2 = this;
  const { params, $wrapperEl, activeIndex } = swiper2;
  let activeIndexBuffer = activeIndex;
  if (params.loop) {
    activeIndexBuffer -= swiper2.loopedSlides;
    swiper2.loopDestroy();
    swiper2.slides = $wrapperEl.children(`.${params.slideClass}`);
  }
  let newActiveIndex = activeIndexBuffer;
  let indexToRemove;
  if (typeof slidesIndexes === "object" && "length" in slidesIndexes) {
    for (let i = 0; i < slidesIndexes.length; i += 1) {
      indexToRemove = slidesIndexes[i];
      if (swiper2.slides[indexToRemove])
        swiper2.slides.eq(indexToRemove).remove();
      if (indexToRemove < newActiveIndex)
        newActiveIndex -= 1;
    }
    newActiveIndex = Math.max(newActiveIndex, 0);
  } else {
    indexToRemove = slidesIndexes;
    if (swiper2.slides[indexToRemove])
      swiper2.slides.eq(indexToRemove).remove();
    if (indexToRemove < newActiveIndex)
      newActiveIndex -= 1;
    newActiveIndex = Math.max(newActiveIndex, 0);
  }
  if (params.loop) {
    swiper2.loopCreate();
  }
  if (!(params.observer && Support.observer)) {
    swiper2.update();
  }
  if (params.loop) {
    swiper2.slideTo(newActiveIndex + swiper2.loopedSlides, 0, false);
  } else {
    swiper2.slideTo(newActiveIndex, 0, false);
  }
}
function removeAllSlides() {
  const swiper2 = this;
  const slidesIndexes = [];
  for (let i = 0; i < swiper2.slides.length; i += 1) {
    slidesIndexes.push(i);
  }
  swiper2.removeSlide(slidesIndexes);
}
var manipulation = {
  appendSlide,
  prependSlide,
  addSlide,
  removeSlide,
  removeAllSlides
};
const Device = function Device2() {
  const ua = win.navigator.userAgent;
  const device = {
    ios: false,
    android: false,
    androidChrome: false,
    desktop: false,
    windows: false,
    iphone: false,
    ipod: false,
    ipad: false,
    cordova: win.cordova || win.phonegap,
    phonegap: win.cordova || win.phonegap
  };
  const windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/);
  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
  const ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
  if (windows) {
    device.os = "windows";
    device.osVersion = windows[2];
    device.windows = true;
  }
  if (android && !windows) {
    device.os = "android";
    device.osVersion = android[2];
    device.android = true;
    device.androidChrome = ua.toLowerCase().indexOf("chrome") >= 0;
  }
  if (ipad || iphone || ipod) {
    device.os = "ios";
    device.ios = true;
  }
  if (iphone && !ipod) {
    device.osVersion = iphone[2].replace(/_/g, ".");
    device.iphone = true;
  }
  if (ipad) {
    device.osVersion = ipad[2].replace(/_/g, ".");
    device.ipad = true;
  }
  if (ipod) {
    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, ".") : null;
    device.iphone = true;
  }
  if (device.ios && device.osVersion && ua.indexOf("Version/") >= 0) {
    if (device.osVersion.split(".")[0] === "10") {
      device.osVersion = ua.toLowerCase().split("version/")[1].split(" ")[0];
    }
  }
  device.desktop = !(device.os || device.android || device.webView);
  device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);
  if (device.os && device.os === "ios") {
    const osVersionArr = device.osVersion.split(".");
    const metaViewport = doc.querySelector('meta[name="viewport"]');
    device.minimalUi = !device.webView && (ipod || iphone) && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) && metaViewport && metaViewport.getAttribute("content").indexOf("minimal-ui") >= 0;
  }
  device.pixelRatio = win.devicePixelRatio || 1;
  return device;
}();
function onTouchStart(event) {
  const swiper2 = this;
  const data2 = swiper2.touchEventsData;
  const { params, touches } = swiper2;
  if (swiper2.animating && params.preventInteractionOnTransition) {
    return;
  }
  let e = event;
  if (e.originalEvent)
    e = e.originalEvent;
  data2.isTouchEvent = e.type === "touchstart";
  if (!data2.isTouchEvent && "which" in e && e.which === 3)
    return;
  if (!data2.isTouchEvent && "button" in e && e.button > 0)
    return;
  if (data2.isTouched && data2.isMoved)
    return;
  if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {
    swiper2.allowClick = true;
    return;
  }
  if (params.swipeHandler) {
    if (!$(e).closest(params.swipeHandler)[0])
      return;
  }
  touches.currentX = e.type === "touchstart" ? e.targetTouches[0].pageX : e.pageX;
  touches.currentY = e.type === "touchstart" ? e.targetTouches[0].pageY : e.pageY;
  const startX = touches.currentX;
  const startY = touches.currentY;
  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= win.screen.width - edgeSwipeThreshold)) {
    return;
  }
  Utils.extend(data2, {
    isTouched: true,
    isMoved: false,
    allowTouchCallbacks: true,
    isScrolling: void 0,
    startMoving: void 0
  });
  touches.startX = startX;
  touches.startY = startY;
  data2.touchStartTime = Utils.now();
  swiper2.allowClick = true;
  swiper2.updateSize();
  swiper2.swipeDirection = void 0;
  if (params.threshold > 0)
    data2.allowThresholdMove = false;
  if (e.type !== "touchstart") {
    let preventDefault = true;
    if ($(e.target).is(data2.formElements))
      preventDefault = false;
    if (doc.activeElement && $(doc.activeElement).is(data2.formElements) && doc.activeElement !== e.target) {
      doc.activeElement.blur();
    }
    const shouldPreventDefault = preventDefault && swiper2.allowTouchMove && params.touchStartPreventDefault;
    if (params.touchStartForcePreventDefault || shouldPreventDefault) {
      e.preventDefault();
    }
  }
  swiper2.emit("touchStart", e);
}
function onTouchMove(event) {
  const swiper2 = this;
  const data2 = swiper2.touchEventsData;
  const { params, touches, rtlTranslate: rtl } = swiper2;
  let e = event;
  if (e.originalEvent)
    e = e.originalEvent;
  if (!data2.isTouched) {
    if (data2.startMoving && data2.isScrolling) {
      swiper2.emit("touchMoveOpposite", e);
    }
    return;
  }
  if (data2.isTouchEvent && e.type === "mousemove")
    return;
  const pageX = e.type === "touchmove" ? e.targetTouches[0].pageX : e.pageX;
  const pageY = e.type === "touchmove" ? e.targetTouches[0].pageY : e.pageY;
  if (e.preventedByNestedSwiper) {
    touches.startX = pageX;
    touches.startY = pageY;
    return;
  }
  if (!swiper2.allowTouchMove) {
    swiper2.allowClick = false;
    if (data2.isTouched) {
      Utils.extend(touches, {
        startX: pageX,
        startY: pageY,
        currentX: pageX,
        currentY: pageY
      });
      data2.touchStartTime = Utils.now();
    }
    return;
  }
  if (data2.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
    if (swiper2.isVertical()) {
      if (pageY < touches.startY && swiper2.translate <= swiper2.maxTranslate() || pageY > touches.startY && swiper2.translate >= swiper2.minTranslate()) {
        data2.isTouched = false;
        data2.isMoved = false;
        return;
      }
    } else if (pageX < touches.startX && swiper2.translate <= swiper2.maxTranslate() || pageX > touches.startX && swiper2.translate >= swiper2.minTranslate()) {
      return;
    }
  }
  if (data2.isTouchEvent && doc.activeElement) {
    if (e.target === doc.activeElement && $(e.target).is(data2.formElements)) {
      data2.isMoved = true;
      swiper2.allowClick = false;
      return;
    }
  }
  if (data2.allowTouchCallbacks) {
    swiper2.emit("touchMove", e);
  }
  if (e.targetTouches && e.targetTouches.length > 1)
    return;
  touches.currentX = pageX;
  touches.currentY = pageY;
  const diffX = touches.currentX - touches.startX;
  const diffY = touches.currentY - touches.startY;
  if (swiper2.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper2.params.threshold)
    return;
  if (typeof data2.isScrolling === "undefined") {
    let touchAngle;
    if (swiper2.isHorizontal() && touches.currentY === touches.startY || swiper2.isVertical() && touches.currentX === touches.startX) {
      data2.isScrolling = false;
    } else {
      if (diffX * diffX + diffY * diffY >= 25) {
        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
        data2.isScrolling = swiper2.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
      }
    }
  }
  if (data2.isScrolling) {
    swiper2.emit("touchMoveOpposite", e);
  }
  if (typeof data2.startMoving === "undefined") {
    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
      data2.startMoving = true;
    }
  }
  if (data2.isScrolling) {
    data2.isTouched = false;
    return;
  }
  if (!data2.startMoving) {
    return;
  }
  swiper2.allowClick = false;
  e.preventDefault();
  if (params.touchMoveStopPropagation && !params.nested) {
    e.stopPropagation();
  }
  if (!data2.isMoved) {
    if (params.loop) {
      swiper2.loopFix();
    }
    data2.startTranslate = swiper2.getTranslate();
    swiper2.setTransition(0);
    if (swiper2.animating) {
      swiper2.$wrapperEl.trigger("webkitTransitionEnd transitionend");
    }
    data2.allowMomentumBounce = false;
    if (params.grabCursor && (swiper2.allowSlideNext === true || swiper2.allowSlidePrev === true)) {
      swiper2.setGrabCursor(true);
    }
    swiper2.emit("sliderFirstMove", e);
  }
  swiper2.emit("sliderMove", e);
  data2.isMoved = true;
  let diff = swiper2.isHorizontal() ? diffX : diffY;
  touches.diff = diff;
  diff *= params.touchRatio;
  if (rtl)
    diff = -diff;
  swiper2.swipeDirection = diff > 0 ? "prev" : "next";
  data2.currentTranslate = diff + data2.startTranslate;
  let disableParentSwiper = true;
  let resistanceRatio = params.resistanceRatio;
  if (params.touchReleaseOnEdges) {
    resistanceRatio = 0;
  }
  if (diff > 0 && data2.currentTranslate > swiper2.minTranslate()) {
    disableParentSwiper = false;
    if (params.resistance)
      data2.currentTranslate = swiper2.minTranslate() - 1 + (-swiper2.minTranslate() + data2.startTranslate + diff) ** resistanceRatio;
  } else if (diff < 0 && data2.currentTranslate < swiper2.maxTranslate()) {
    disableParentSwiper = false;
    if (params.resistance)
      data2.currentTranslate = swiper2.maxTranslate() + 1 - (swiper2.maxTranslate() - data2.startTranslate - diff) ** resistanceRatio;
  }
  if (disableParentSwiper) {
    e.preventedByNestedSwiper = true;
  }
  if (!swiper2.allowSlideNext && swiper2.swipeDirection === "next" && data2.currentTranslate < data2.startTranslate) {
    data2.currentTranslate = data2.startTranslate;
  }
  if (!swiper2.allowSlidePrev && swiper2.swipeDirection === "prev" && data2.currentTranslate > data2.startTranslate) {
    data2.currentTranslate = data2.startTranslate;
  }
  if (params.threshold > 0) {
    if (Math.abs(diff) > params.threshold || data2.allowThresholdMove) {
      if (!data2.allowThresholdMove) {
        data2.allowThresholdMove = true;
        touches.startX = touches.currentX;
        touches.startY = touches.currentY;
        data2.currentTranslate = data2.startTranslate;
        touches.diff = swiper2.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
        return;
      }
    } else {
      data2.currentTranslate = data2.startTranslate;
      return;
    }
  }
  if (!params.followFinger)
    return;
  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
    swiper2.updateActiveIndex();
    swiper2.updateSlidesClasses();
  }
  if (params.freeMode) {
    if (data2.velocities.length === 0) {
      data2.velocities.push({
        position: touches[swiper2.isHorizontal() ? "startX" : "startY"],
        time: data2.touchStartTime
      });
    }
    data2.velocities.push({
      position: touches[swiper2.isHorizontal() ? "currentX" : "currentY"],
      time: Utils.now()
    });
  }
  swiper2.updateProgress(data2.currentTranslate);
  swiper2.setTranslate(data2.currentTranslate);
}
function onTouchEnd(event) {
  const swiper2 = this;
  const data2 = swiper2.touchEventsData;
  const {
    params,
    touches,
    rtlTranslate: rtl,
    $wrapperEl,
    slidesGrid,
    snapGrid
  } = swiper2;
  let e = event;
  if (e.originalEvent)
    e = e.originalEvent;
  if (data2.allowTouchCallbacks) {
    swiper2.emit("touchEnd", e);
  }
  data2.allowTouchCallbacks = false;
  if (!data2.isTouched) {
    if (data2.isMoved && params.grabCursor) {
      swiper2.setGrabCursor(false);
    }
    data2.isMoved = false;
    data2.startMoving = false;
    return;
  }
  if (params.grabCursor && data2.isMoved && data2.isTouched && (swiper2.allowSlideNext === true || swiper2.allowSlidePrev === true)) {
    swiper2.setGrabCursor(false);
  }
  const touchEndTime = Utils.now();
  const timeDiff = touchEndTime - data2.touchStartTime;
  if (swiper2.allowClick) {
    swiper2.updateClickedSlide(e);
    swiper2.emit("tap", e);
    if (timeDiff < 300 && touchEndTime - data2.lastClickTime > 300) {
      if (data2.clickTimeout)
        clearTimeout(data2.clickTimeout);
      data2.clickTimeout = Utils.nextTick(() => {
        if (!swiper2 || swiper2.destroyed)
          return;
        swiper2.emit("click", e);
      }, 300);
    }
    if (timeDiff < 300 && touchEndTime - data2.lastClickTime < 300) {
      if (data2.clickTimeout)
        clearTimeout(data2.clickTimeout);
      swiper2.emit("doubleTap", e);
    }
  }
  data2.lastClickTime = Utils.now();
  Utils.nextTick(() => {
    if (!swiper2.destroyed)
      swiper2.allowClick = true;
  });
  if (!data2.isTouched || !data2.isMoved || !swiper2.swipeDirection || touches.diff === 0 || data2.currentTranslate === data2.startTranslate) {
    data2.isTouched = false;
    data2.isMoved = false;
    data2.startMoving = false;
    return;
  }
  data2.isTouched = false;
  data2.isMoved = false;
  data2.startMoving = false;
  let currentPos;
  if (params.followFinger) {
    currentPos = rtl ? swiper2.translate : -swiper2.translate;
  } else {
    currentPos = -data2.currentTranslate;
  }
  if (params.freeMode) {
    if (currentPos < -swiper2.minTranslate()) {
      swiper2.slideTo(swiper2.activeIndex);
      return;
    }
    if (currentPos > -swiper2.maxTranslate()) {
      if (swiper2.slides.length < snapGrid.length) {
        swiper2.slideTo(snapGrid.length - 1);
      } else {
        swiper2.slideTo(swiper2.slides.length - 1);
      }
      return;
    }
    if (params.freeModeMomentum) {
      if (data2.velocities.length > 1) {
        const lastMoveEvent = data2.velocities.pop();
        const velocityEvent = data2.velocities.pop();
        const distance = lastMoveEvent.position - velocityEvent.position;
        const time = lastMoveEvent.time - velocityEvent.time;
        swiper2.velocity = distance / time;
        swiper2.velocity /= 2;
        if (Math.abs(swiper2.velocity) < params.freeModeMinimumVelocity) {
          swiper2.velocity = 0;
        }
        if (time > 150 || Utils.now() - lastMoveEvent.time > 300) {
          swiper2.velocity = 0;
        }
      } else {
        swiper2.velocity = 0;
      }
      swiper2.velocity *= params.freeModeMomentumVelocityRatio;
      data2.velocities.length = 0;
      let momentumDuration = 1e3 * params.freeModeMomentumRatio;
      const momentumDistance = swiper2.velocity * momentumDuration;
      let newPosition = swiper2.translate + momentumDistance;
      if (rtl)
        newPosition = -newPosition;
      let doBounce = false;
      let afterBouncePosition;
      const bounceAmount = Math.abs(swiper2.velocity) * 20 * params.freeModeMomentumBounceRatio;
      let needsLoopFix;
      if (newPosition < swiper2.maxTranslate()) {
        if (params.freeModeMomentumBounce) {
          if (newPosition + swiper2.maxTranslate() < -bounceAmount) {
            newPosition = swiper2.maxTranslate() - bounceAmount;
          }
          afterBouncePosition = swiper2.maxTranslate();
          doBounce = true;
          data2.allowMomentumBounce = true;
        } else {
          newPosition = swiper2.maxTranslate();
        }
        if (params.loop && params.centeredSlides)
          needsLoopFix = true;
      } else if (newPosition > swiper2.minTranslate()) {
        if (params.freeModeMomentumBounce) {
          if (newPosition - swiper2.minTranslate() > bounceAmount) {
            newPosition = swiper2.minTranslate() + bounceAmount;
          }
          afterBouncePosition = swiper2.minTranslate();
          doBounce = true;
          data2.allowMomentumBounce = true;
        } else {
          newPosition = swiper2.minTranslate();
        }
        if (params.loop && params.centeredSlides)
          needsLoopFix = true;
      } else if (params.freeModeSticky) {
        let nextSlide;
        for (let j = 0; j < snapGrid.length; j += 1) {
          if (snapGrid[j] > -newPosition) {
            nextSlide = j;
            break;
          }
        }
        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper2.swipeDirection === "next") {
          newPosition = snapGrid[nextSlide];
        } else {
          newPosition = snapGrid[nextSlide - 1];
        }
        newPosition = -newPosition;
      }
      if (needsLoopFix) {
        swiper2.once("transitionEnd", () => {
          swiper2.loopFix();
        });
      }
      if (swiper2.velocity !== 0) {
        if (rtl) {
          momentumDuration = Math.abs((-newPosition - swiper2.translate) / swiper2.velocity);
        } else {
          momentumDuration = Math.abs((newPosition - swiper2.translate) / swiper2.velocity);
        }
      } else if (params.freeModeSticky) {
        swiper2.slideToClosest();
        return;
      }
      if (params.freeModeMomentumBounce && doBounce) {
        swiper2.updateProgress(afterBouncePosition);
        swiper2.setTransition(momentumDuration);
        swiper2.setTranslate(newPosition);
        swiper2.transitionStart(true, swiper2.swipeDirection);
        swiper2.animating = true;
        $wrapperEl.transitionEnd(() => {
          if (!swiper2 || swiper2.destroyed || !data2.allowMomentumBounce)
            return;
          swiper2.emit("momentumBounce");
          swiper2.setTransition(params.speed);
          swiper2.setTranslate(afterBouncePosition);
          $wrapperEl.transitionEnd(() => {
            if (!swiper2 || swiper2.destroyed)
              return;
            swiper2.transitionEnd();
          });
        });
      } else if (swiper2.velocity) {
        swiper2.updateProgress(newPosition);
        swiper2.setTransition(momentumDuration);
        swiper2.setTranslate(newPosition);
        swiper2.transitionStart(true, swiper2.swipeDirection);
        if (!swiper2.animating) {
          swiper2.animating = true;
          $wrapperEl.transitionEnd(() => {
            if (!swiper2 || swiper2.destroyed)
              return;
            swiper2.transitionEnd();
          });
        }
      } else {
        swiper2.updateProgress(newPosition);
      }
      swiper2.updateActiveIndex();
      swiper2.updateSlidesClasses();
    } else if (params.freeModeSticky) {
      swiper2.slideToClosest();
      return;
    }
    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
      swiper2.updateProgress();
      swiper2.updateActiveIndex();
      swiper2.updateSlidesClasses();
    }
    return;
  }
  let stopIndex = 0;
  let groupSize = swiper2.slidesSizesGrid[0];
  for (let i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {
    if (typeof slidesGrid[i + params.slidesPerGroup] !== "undefined") {
      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {
        stopIndex = i;
        groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];
      }
    } else if (currentPos >= slidesGrid[i]) {
      stopIndex = i;
      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
    }
  }
  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
  if (timeDiff > params.longSwipesMs) {
    if (!params.longSwipes) {
      swiper2.slideTo(swiper2.activeIndex);
      return;
    }
    if (swiper2.swipeDirection === "next") {
      if (ratio >= params.longSwipesRatio)
        swiper2.slideTo(stopIndex + params.slidesPerGroup);
      else
        swiper2.slideTo(stopIndex);
    }
    if (swiper2.swipeDirection === "prev") {
      if (ratio > 1 - params.longSwipesRatio)
        swiper2.slideTo(stopIndex + params.slidesPerGroup);
      else
        swiper2.slideTo(stopIndex);
    }
  } else {
    if (!params.shortSwipes) {
      swiper2.slideTo(swiper2.activeIndex);
      return;
    }
    if (swiper2.swipeDirection === "next") {
      swiper2.slideTo(stopIndex + params.slidesPerGroup);
    }
    if (swiper2.swipeDirection === "prev") {
      swiper2.slideTo(stopIndex);
    }
  }
}
function onResize() {
  const swiper2 = this;
  const { params, el } = swiper2;
  if (el && el.offsetWidth === 0)
    return;
  if (params.breakpoints) {
    swiper2.setBreakpoint();
  }
  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper2;
  swiper2.allowSlideNext = true;
  swiper2.allowSlidePrev = true;
  swiper2.updateSize();
  swiper2.updateSlides();
  if (params.freeMode) {
    const newTranslate = Math.min(Math.max(swiper2.translate, swiper2.maxTranslate()), swiper2.minTranslate());
    swiper2.setTranslate(newTranslate);
    swiper2.updateActiveIndex();
    swiper2.updateSlidesClasses();
    if (params.autoHeight) {
      swiper2.updateAutoHeight();
    }
  } else {
    swiper2.updateSlidesClasses();
    if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper2.isEnd && !swiper2.params.centeredSlides) {
      swiper2.slideTo(swiper2.slides.length - 1, 0, false, true);
    } else {
      swiper2.slideTo(swiper2.activeIndex, 0, false, true);
    }
  }
  if (swiper2.autoplay && swiper2.autoplay.running && swiper2.autoplay.paused) {
    swiper2.autoplay.run();
  }
  swiper2.allowSlidePrev = allowSlidePrev;
  swiper2.allowSlideNext = allowSlideNext;
  if (swiper2.params.watchOverflow && snapGrid !== swiper2.snapGrid) {
    swiper2.checkOverflow();
  }
}
function onClick(e) {
  const swiper2 = this;
  if (!swiper2.allowClick) {
    if (swiper2.params.preventClicks)
      e.preventDefault();
    if (swiper2.params.preventClicksPropagation && swiper2.animating) {
      e.stopPropagation();
      e.stopImmediatePropagation();
    }
  }
}
function attachEvents() {
  const swiper2 = this;
  const {
    params,
    touchEvents,
    el,
    wrapperEl
  } = swiper2;
  {
    swiper2.onTouchStart = onTouchStart.bind(swiper2);
    swiper2.onTouchMove = onTouchMove.bind(swiper2);
    swiper2.onTouchEnd = onTouchEnd.bind(swiper2);
  }
  swiper2.onClick = onClick.bind(swiper2);
  const target = params.touchEventsTarget === "container" ? el : wrapperEl;
  const capture = !!params.nested;
  {
    if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
      target.addEventListener(touchEvents.start, swiper2.onTouchStart, false);
      doc.addEventListener(touchEvents.move, swiper2.onTouchMove, capture);
      doc.addEventListener(touchEvents.end, swiper2.onTouchEnd, false);
    } else {
      if (Support.touch) {
        const passiveListener = touchEvents.start === "touchstart" && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
        target.addEventListener(touchEvents.start, swiper2.onTouchStart, passiveListener);
        target.addEventListener(touchEvents.move, swiper2.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);
        target.addEventListener(touchEvents.end, swiper2.onTouchEnd, passiveListener);
      }
      if (params.simulateTouch && !Device.ios && !Device.android || params.simulateTouch && !Support.touch && Device.ios) {
        target.addEventListener("mousedown", swiper2.onTouchStart, false);
        doc.addEventListener("mousemove", swiper2.onTouchMove, capture);
        doc.addEventListener("mouseup", swiper2.onTouchEnd, false);
      }
    }
    if (params.preventClicks || params.preventClicksPropagation) {
      target.addEventListener("click", swiper2.onClick, true);
    }
  }
  swiper2.on(Device.ios || Device.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", onResize, true);
}
function detachEvents() {
  const swiper2 = this;
  const {
    params,
    touchEvents,
    el,
    wrapperEl
  } = swiper2;
  const target = params.touchEventsTarget === "container" ? el : wrapperEl;
  const capture = !!params.nested;
  {
    if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
      target.removeEventListener(touchEvents.start, swiper2.onTouchStart, false);
      doc.removeEventListener(touchEvents.move, swiper2.onTouchMove, capture);
      doc.removeEventListener(touchEvents.end, swiper2.onTouchEnd, false);
    } else {
      if (Support.touch) {
        const passiveListener = touchEvents.start === "onTouchStart" && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
        target.removeEventListener(touchEvents.start, swiper2.onTouchStart, passiveListener);
        target.removeEventListener(touchEvents.move, swiper2.onTouchMove, capture);
        target.removeEventListener(touchEvents.end, swiper2.onTouchEnd, passiveListener);
      }
      if (params.simulateTouch && !Device.ios && !Device.android || params.simulateTouch && !Support.touch && Device.ios) {
        target.removeEventListener("mousedown", swiper2.onTouchStart, false);
        doc.removeEventListener("mousemove", swiper2.onTouchMove, capture);
        doc.removeEventListener("mouseup", swiper2.onTouchEnd, false);
      }
    }
    if (params.preventClicks || params.preventClicksPropagation) {
      target.removeEventListener("click", swiper2.onClick, true);
    }
  }
  swiper2.off(Device.ios || Device.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", onResize);
}
var events = {
  attachEvents,
  detachEvents
};
function setBreakpoint() {
  const swiper2 = this;
  const {
    activeIndex,
    initialized,
    loopedSlides = 0,
    params
  } = swiper2;
  const breakpoints2 = params.breakpoints;
  if (!breakpoints2 || breakpoints2 && Object.keys(breakpoints2).length === 0)
    return;
  const breakpoint = swiper2.getBreakpoint(breakpoints2);
  if (breakpoint && swiper2.currentBreakpoint !== breakpoint) {
    const breakpointOnlyParams = breakpoint in breakpoints2 ? breakpoints2[breakpoint] : void 0;
    if (breakpointOnlyParams) {
      ["slidesPerView", "spaceBetween", "slidesPerGroup"].forEach((param) => {
        const paramValue = breakpointOnlyParams[param];
        if (typeof paramValue === "undefined")
          return;
        if (param === "slidesPerView" && (paramValue === "AUTO" || paramValue === "auto")) {
          breakpointOnlyParams[param] = "auto";
        } else if (param === "slidesPerView") {
          breakpointOnlyParams[param] = parseFloat(paramValue);
        } else {
          breakpointOnlyParams[param] = parseInt(paramValue, 10);
        }
      });
    }
    const breakpointParams = breakpointOnlyParams || swiper2.originalParams;
    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
    if (directionChanged && initialized) {
      swiper2.changeDirection();
    }
    Utils.extend(swiper2.params, breakpointParams);
    Utils.extend(swiper2, {
      allowTouchMove: swiper2.params.allowTouchMove,
      allowSlideNext: swiper2.params.allowSlideNext,
      allowSlidePrev: swiper2.params.allowSlidePrev
    });
    swiper2.currentBreakpoint = breakpoint;
    if (needsReLoop && initialized) {
      swiper2.loopDestroy();
      swiper2.loopCreate();
      swiper2.updateSlides();
      swiper2.slideTo(activeIndex - loopedSlides + swiper2.loopedSlides, 0, false);
    }
    swiper2.emit("breakpoint", breakpointParams);
  }
}
function getBreakpoint(breakpoints2) {
  const swiper2 = this;
  if (!breakpoints2)
    return void 0;
  let breakpoint = false;
  const points = [];
  Object.keys(breakpoints2).forEach((point) => {
    points.push(point);
  });
  points.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));
  for (let i = 0; i < points.length; i += 1) {
    const point = points[i];
    if (swiper2.params.breakpointsInverse) {
      if (point <= win.innerWidth) {
        breakpoint = point;
      }
    } else if (point >= win.innerWidth && !breakpoint) {
      breakpoint = point;
    }
  }
  return breakpoint || "max";
}
var breakpoints = { setBreakpoint, getBreakpoint };
function addClasses() {
  const swiper2 = this;
  const {
    classNames,
    params,
    rtl,
    $el
  } = swiper2;
  const suffixes = [];
  suffixes.push("initialized");
  suffixes.push(params.direction);
  if (params.freeMode) {
    suffixes.push("free-mode");
  }
  if (!Support.flexbox) {
    suffixes.push("no-flexbox");
  }
  if (params.autoHeight) {
    suffixes.push("autoheight");
  }
  if (rtl) {
    suffixes.push("rtl");
  }
  if (params.slidesPerColumn > 1) {
    suffixes.push("multirow");
  }
  if (Device.android) {
    suffixes.push("android");
  }
  if (Device.ios) {
    suffixes.push("ios");
  }
  if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {
    suffixes.push(`wp8-${params.direction}`);
  }
  suffixes.forEach((suffix) => {
    classNames.push(params.containerModifierClass + suffix);
  });
  $el.addClass(classNames.join(" "));
}
function removeClasses() {
  const swiper2 = this;
  const { $el, classNames } = swiper2;
  $el.removeClass(classNames.join(" "));
}
var classes = { addClasses, removeClasses };
function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
  let image;
  function onReady() {
    if (callback)
      callback();
  }
  if (!imageEl.complete || !checkForComplete) {
    if (src) {
      image = new win.Image();
      image.onload = onReady;
      image.onerror = onReady;
      if (sizes) {
        image.sizes = sizes;
      }
      if (srcset) {
        image.srcset = srcset;
      }
      if (src) {
        image.src = src;
      }
    } else {
      onReady();
    }
  } else {
    onReady();
  }
}
function preloadImages() {
  const swiper2 = this;
  swiper2.imagesToLoad = swiper2.$el.find("img");
  function onReady() {
    if (typeof swiper2 === "undefined" || swiper2 === null || !swiper2 || swiper2.destroyed)
      return;
    if (swiper2.imagesLoaded !== void 0)
      swiper2.imagesLoaded += 1;
    if (swiper2.imagesLoaded === swiper2.imagesToLoad.length) {
      if (swiper2.params.updateOnImagesReady)
        swiper2.update();
      swiper2.emit("imagesReady");
    }
  }
  for (let i = 0; i < swiper2.imagesToLoad.length; i += 1) {
    const imageEl = swiper2.imagesToLoad[i];
    swiper2.loadImage(
      imageEl,
      imageEl.currentSrc || imageEl.getAttribute("src"),
      imageEl.srcset || imageEl.getAttribute("srcset"),
      imageEl.sizes || imageEl.getAttribute("sizes"),
      true,
      onReady
    );
  }
}
var images = {
  loadImage,
  preloadImages
};
function checkOverflow() {
  const swiper2 = this;
  const wasLocked = swiper2.isLocked;
  swiper2.isLocked = swiper2.snapGrid.length === 1;
  swiper2.allowSlideNext = !swiper2.isLocked;
  swiper2.allowSlidePrev = !swiper2.isLocked;
  if (wasLocked !== swiper2.isLocked)
    swiper2.emit(swiper2.isLocked ? "lock" : "unlock");
  if (wasLocked && wasLocked !== swiper2.isLocked) {
    swiper2.isEnd = false;
    swiper2.navigation.update();
  }
}
var checkOverflow$1 = { checkOverflow };
var defaults = {
  init: true,
  direction: "horizontal",
  touchEventsTarget: "container",
  initialSlide: 0,
  speed: 300,
  //
  preventInteractionOnTransition: false,
  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
  edgeSwipeDetection: false,
  edgeSwipeThreshold: 20,
  // Free mode
  freeMode: false,
  freeModeMomentum: true,
  freeModeMomentumRatio: 1,
  freeModeMomentumBounce: true,
  freeModeMomentumBounceRatio: 1,
  freeModeMomentumVelocityRatio: 1,
  freeModeSticky: false,
  freeModeMinimumVelocity: 0.02,
  // Autoheight
  autoHeight: false,
  // Set wrapper width
  setWrapperSize: false,
  // Virtual Translate
  virtualTranslate: false,
  // Effects
  effect: "slide",
  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
  // Breakpoints
  breakpoints: void 0,
  breakpointsInverse: false,
  // Slides grid
  spaceBetween: 0,
  slidesPerView: 1,
  slidesPerColumn: 1,
  slidesPerColumnFill: "column",
  slidesPerGroup: 1,
  centeredSlides: false,
  slidesOffsetBefore: 0,
  // in px
  slidesOffsetAfter: 0,
  // in px
  normalizeSlideIndex: true,
  centerInsufficientSlides: false,
  // Disable swiper and hide navigation when container not overflow
  watchOverflow: false,
  // Round length
  roundLengths: false,
  // Touches
  touchRatio: 1,
  touchAngle: 45,
  simulateTouch: true,
  shortSwipes: true,
  longSwipes: true,
  longSwipesRatio: 0.5,
  longSwipesMs: 300,
  followFinger: true,
  allowTouchMove: true,
  threshold: 0,
  touchMoveStopPropagation: true,
  touchStartPreventDefault: true,
  touchStartForcePreventDefault: false,
  touchReleaseOnEdges: false,
  // Unique Navigation Elements
  uniqueNavElements: true,
  // Resistance
  resistance: true,
  resistanceRatio: 0.85,
  // Progress
  watchSlidesProgress: false,
  watchSlidesVisibility: false,
  // Cursor
  grabCursor: false,
  // Clicks
  preventClicks: true,
  preventClicksPropagation: true,
  slideToClickedSlide: false,
  // Images
  preloadImages: true,
  updateOnImagesReady: true,
  // loop
  loop: false,
  loopAdditionalSlides: 0,
  loopedSlides: null,
  loopFillGroupWithBlank: false,
  // Swiping/no swiping
  allowSlidePrev: true,
  allowSlideNext: true,
  swipeHandler: null,
  // '.swipe-handler',
  noSwiping: true,
  noSwipingClass: "swiper-no-swiping",
  noSwipingSelector: null,
  // Passive Listeners
  passiveListeners: true,
  // NS
  containerModifierClass: "swiper-container-",
  // NEW
  slideClass: "swiper-slide",
  slideBlankClass: "swiper-slide-invisible-blank",
  slideActiveClass: "swiper-slide-active",
  slideDuplicateActiveClass: "swiper-slide-duplicate-active",
  slideVisibleClass: "swiper-slide-visible",
  slideDuplicateClass: "swiper-slide-duplicate",
  slideNextClass: "swiper-slide-next",
  slideDuplicateNextClass: "swiper-slide-duplicate-next",
  slidePrevClass: "swiper-slide-prev",
  slideDuplicatePrevClass: "swiper-slide-duplicate-prev",
  wrapperClass: "swiper-wrapper",
  // Callbacks
  runCallbacksOnInit: true
};
const prototypes = {
  update,
  translate,
  transition,
  slide,
  loop,
  grabCursor,
  manipulation,
  events,
  breakpoints,
  checkOverflow: checkOverflow$1,
  classes,
  images
};
const extendedDefaults = {};
class Swiper extends SwiperClass {
  constructor(...args) {
    let el;
    let params;
    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
      params = args[0];
    } else {
      [el, params] = args;
    }
    if (!params)
      params = {};
    params = Utils.extend({}, params);
    if (el && !params.el)
      params.el = el;
    super(params);
    Object.keys(prototypes).forEach((prototypeGroup) => {
      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {
        if (!Swiper.prototype[protoMethod]) {
          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
        }
      });
    });
    const swiper2 = this;
    if (typeof swiper2.modules === "undefined") {
      swiper2.modules = {};
    }
    Object.keys(swiper2.modules).forEach((moduleName) => {
      const module2 = swiper2.modules[moduleName];
      if (module2.params) {
        const moduleParamName = Object.keys(module2.params)[0];
        const moduleParams = module2.params[moduleParamName];
        if (typeof moduleParams !== "object" || moduleParams === null)
          return;
        if (!(moduleParamName in params && "enabled" in moduleParams))
          return;
        if (params[moduleParamName] === true) {
          params[moduleParamName] = { enabled: true };
        }
        if (typeof params[moduleParamName] === "object" && !("enabled" in params[moduleParamName])) {
          params[moduleParamName].enabled = true;
        }
        if (!params[moduleParamName])
          params[moduleParamName] = { enabled: false };
      }
    });
    const swiperParams = Utils.extend({}, defaults);
    swiper2.useModulesParams(swiperParams);
    swiper2.params = Utils.extend({}, swiperParams, extendedDefaults, params);
    swiper2.originalParams = Utils.extend({}, swiper2.params);
    swiper2.passedParams = Utils.extend({}, params);
    swiper2.$ = $;
    const $el = $(swiper2.params.el);
    el = $el[0];
    if (!el) {
      return void 0;
    }
    if ($el.length > 1) {
      const swipers = [];
      $el.each((index2, containerEl) => {
        const newParams = Utils.extend({}, params, { el: containerEl });
        swipers.push(new Swiper(newParams));
      });
      return swipers;
    }
    el.swiper = swiper2;
    $el.data("swiper", swiper2);
    const $wrapperEl = $el.children(`.${swiper2.params.wrapperClass}`);
    Utils.extend(swiper2, {
      $el,
      el,
      $wrapperEl,
      wrapperEl: $wrapperEl[0],
      // Classes
      classNames: [],
      // Slides
      slides: $(),
      slidesGrid: [],
      snapGrid: [],
      slidesSizesGrid: [],
      // isDirection
      isHorizontal() {
        return swiper2.params.direction === "horizontal";
      },
      isVertical() {
        return swiper2.params.direction === "vertical";
      },
      // RTL
      rtl: el.dir.toLowerCase() === "rtl" || $el.css("direction") === "rtl",
      rtlTranslate: swiper2.params.direction === "horizontal" && (el.dir.toLowerCase() === "rtl" || $el.css("direction") === "rtl"),
      wrongRTL: $wrapperEl.css("display") === "-webkit-box",
      // Indexes
      activeIndex: 0,
      realIndex: 0,
      //
      isBeginning: true,
      isEnd: false,
      // Props
      translate: 0,
      previousTranslate: 0,
      progress: 0,
      velocity: 0,
      animating: false,
      // Locks
      allowSlideNext: swiper2.params.allowSlideNext,
      allowSlidePrev: swiper2.params.allowSlidePrev,
      // Touch Events
      touchEvents: function touchEvents() {
        const touch = ["touchstart", "touchmove", "touchend"];
        let desktop = ["mousedown", "mousemove", "mouseup"];
        if (Support.pointerEvents) {
          desktop = ["pointerdown", "pointermove", "pointerup"];
        } else if (Support.prefixedPointerEvents) {
          desktop = ["MSPointerDown", "MSPointerMove", "MSPointerUp"];
        }
        swiper2.touchEventsTouch = {
          start: touch[0],
          move: touch[1],
          end: touch[2]
        };
        swiper2.touchEventsDesktop = {
          start: desktop[0],
          move: desktop[1],
          end: desktop[2]
        };
        return Support.touch || !swiper2.params.simulateTouch ? swiper2.touchEventsTouch : swiper2.touchEventsDesktop;
      }(),
      touchEventsData: {
        isTouched: void 0,
        isMoved: void 0,
        allowTouchCallbacks: void 0,
        touchStartTime: void 0,
        isScrolling: void 0,
        currentTranslate: void 0,
        startTranslate: void 0,
        allowThresholdMove: void 0,
        // Form elements to match
        formElements: "input, select, option, textarea, button, video",
        // Last click time
        lastClickTime: Utils.now(),
        clickTimeout: void 0,
        // Velocities
        velocities: [],
        allowMomentumBounce: void 0,
        isTouchEvent: void 0,
        startMoving: void 0
      },
      // Clicks
      allowClick: true,
      // Touches
      allowTouchMove: swiper2.params.allowTouchMove,
      touches: {
        startX: 0,
        startY: 0,
        currentX: 0,
        currentY: 0,
        diff: 0
      },
      // Images
      imagesToLoad: [],
      imagesLoaded: 0
    });
    swiper2.useModules();
    if (swiper2.params.init) {
      swiper2.init();
    }
    return swiper2;
  }
  slidesPerViewDynamic() {
    const swiper2 = this;
    const {
      params,
      slides,
      slidesGrid,
      size: swiperSize,
      activeIndex
    } = swiper2;
    let spv = 1;
    if (params.centeredSlides) {
      let slideSize = slides[activeIndex].swiperSlideSize;
      let breakLoop;
      for (let i = activeIndex + 1; i < slides.length; i += 1) {
        if (slides[i] && !breakLoop) {
          slideSize += slides[i].swiperSlideSize;
          spv += 1;
          if (slideSize > swiperSize)
            breakLoop = true;
        }
      }
      for (let i = activeIndex - 1; i >= 0; i -= 1) {
        if (slides[i] && !breakLoop) {
          slideSize += slides[i].swiperSlideSize;
          spv += 1;
          if (slideSize > swiperSize)
            breakLoop = true;
        }
      }
    } else {
      for (let i = activeIndex + 1; i < slides.length; i += 1) {
        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {
          spv += 1;
        }
      }
    }
    return spv;
  }
  update() {
    const swiper2 = this;
    if (!swiper2 || swiper2.destroyed)
      return;
    const { snapGrid, params } = swiper2;
    if (params.breakpoints) {
      swiper2.setBreakpoint();
    }
    swiper2.updateSize();
    swiper2.updateSlides();
    swiper2.updateProgress();
    swiper2.updateSlidesClasses();
    function setTranslate2() {
      const translateValue = swiper2.rtlTranslate ? swiper2.translate * -1 : swiper2.translate;
      const newTranslate = Math.min(Math.max(translateValue, swiper2.maxTranslate()), swiper2.minTranslate());
      swiper2.setTranslate(newTranslate);
      swiper2.updateActiveIndex();
      swiper2.updateSlidesClasses();
    }
    let translated;
    if (swiper2.params.freeMode) {
      setTranslate2();
      if (swiper2.params.autoHeight) {
        swiper2.updateAutoHeight();
      }
    } else {
      if ((swiper2.params.slidesPerView === "auto" || swiper2.params.slidesPerView > 1) && swiper2.isEnd && !swiper2.params.centeredSlides) {
        translated = swiper2.slideTo(swiper2.slides.length - 1, 0, false, true);
      } else {
        translated = swiper2.slideTo(swiper2.activeIndex, 0, false, true);
      }
      if (!translated) {
        setTranslate2();
      }
    }
    if (params.watchOverflow && snapGrid !== swiper2.snapGrid) {
      swiper2.checkOverflow();
    }
    swiper2.emit("update");
  }
  changeDirection(newDirection, needUpdate = true) {
    const swiper2 = this;
    const currentDirection = swiper2.params.direction;
    if (!newDirection) {
      newDirection = currentDirection === "horizontal" ? "vertical" : "horizontal";
    }
    if (newDirection === currentDirection || newDirection !== "horizontal" && newDirection !== "vertical") {
      return swiper2;
    }
    swiper2.$el.removeClass(`${swiper2.params.containerModifierClass}${currentDirection} wp8-${currentDirection}`).addClass(`${swiper2.params.containerModifierClass}${newDirection}`);
    if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {
      swiper2.$el.addClass(`${swiper2.params.containerModifierClass}wp8-${newDirection}`);
    }
    swiper2.params.direction = newDirection;
    swiper2.slides.each((slideIndex, slideEl) => {
      if (newDirection === "vertical") {
        slideEl.style.width = "";
      } else {
        slideEl.style.height = "";
      }
    });
    swiper2.emit("changeDirection");
    if (needUpdate)
      swiper2.update();
    return swiper2;
  }
  init() {
    const swiper2 = this;
    if (swiper2.initialized)
      return;
    swiper2.emit("beforeInit");
    if (swiper2.params.breakpoints) {
      swiper2.setBreakpoint();
    }
    swiper2.addClasses();
    if (swiper2.params.loop) {
      swiper2.loopCreate();
    }
    swiper2.updateSize();
    swiper2.updateSlides();
    if (swiper2.params.watchOverflow) {
      swiper2.checkOverflow();
    }
    if (swiper2.params.grabCursor) {
      swiper2.setGrabCursor();
    }
    if (swiper2.params.preloadImages) {
      swiper2.preloadImages();
    }
    if (swiper2.params.loop) {
      swiper2.slideTo(swiper2.params.initialSlide + swiper2.loopedSlides, 0, swiper2.params.runCallbacksOnInit);
    } else {
      swiper2.slideTo(swiper2.params.initialSlide, 0, swiper2.params.runCallbacksOnInit);
    }
    swiper2.attachEvents();
    swiper2.initialized = true;
    swiper2.emit("init");
  }
  destroy(deleteInstance = true, cleanStyles = true) {
    const swiper2 = this;
    const {
      params,
      $el,
      $wrapperEl,
      slides
    } = swiper2;
    if (typeof swiper2.params === "undefined" || swiper2.destroyed) {
      return null;
    }
    swiper2.emit("beforeDestroy");
    swiper2.initialized = false;
    swiper2.detachEvents();
    if (params.loop) {
      swiper2.loopDestroy();
    }
    if (cleanStyles) {
      swiper2.removeClasses();
      $el.removeAttr("style");
      $wrapperEl.removeAttr("style");
      if (slides && slides.length) {
        slides.removeClass([
          params.slideVisibleClass,
          params.slideActiveClass,
          params.slideNextClass,
          params.slidePrevClass
        ].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index").removeAttr("data-swiper-column").removeAttr("data-swiper-row");
      }
    }
    swiper2.emit("destroy");
    Object.keys(swiper2.eventsListeners).forEach((eventName) => {
      swiper2.off(eventName);
    });
    if (deleteInstance !== false) {
      swiper2.$el[0].swiper = null;
      swiper2.$el.data("swiper", null);
      Utils.deleteProps(swiper2);
    }
    swiper2.destroyed = true;
    return null;
  }
  static extendDefaults(newDefaults) {
    Utils.extend(extendedDefaults, newDefaults);
  }
  static get extendedDefaults() {
    return extendedDefaults;
  }
  static get defaults() {
    return defaults;
  }
  static get Class() {
    return SwiperClass;
  }
  static get $() {
    return $;
  }
}
var Device$1 = {
  name: "device",
  proto: {
    device: Device
  },
  static: {
    device: Device
  }
};
var Support$1 = {
  name: "support",
  proto: {
    support: Support
  },
  static: {
    support: Support
  }
};
var Browser$1 = {
  name: "browser",
  proto: {
    browser: Browser
  },
  static: {
    browser: Browser
  }
};
var Resize = {
  name: "resize",
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      resize: {
        resizeHandler() {
          if (!swiper2 || swiper2.destroyed || !swiper2.initialized)
            return;
          swiper2.emit("beforeResize");
          swiper2.emit("resize");
        },
        orientationChangeHandler() {
          if (!swiper2 || swiper2.destroyed || !swiper2.initialized)
            return;
          swiper2.emit("orientationchange");
        }
      }
    });
  },
  on: {
    init() {
      const swiper2 = this;
      win.addEventListener("resize", swiper2.resize.resizeHandler);
      win.addEventListener("orientationchange", swiper2.resize.orientationChangeHandler);
    },
    destroy() {
      const swiper2 = this;
      win.removeEventListener("resize", swiper2.resize.resizeHandler);
      win.removeEventListener("orientationchange", swiper2.resize.orientationChangeHandler);
    }
  }
};
const Observer = {
  func: win.MutationObserver || win.WebkitMutationObserver,
  attach(target, options = {}) {
    const swiper2 = this;
    const ObserverFunc = Observer.func;
    const observer = new ObserverFunc((mutations) => {
      if (mutations.length === 1) {
        swiper2.emit("observerUpdate", mutations[0]);
        return;
      }
      const observerUpdate = function observerUpdate2() {
        swiper2.emit("observerUpdate", mutations[0]);
      };
      if (win.requestAnimationFrame) {
        win.requestAnimationFrame(observerUpdate);
      } else {
        win.setTimeout(observerUpdate, 0);
      }
    });
    observer.observe(target, {
      attributes: typeof options.attributes === "undefined" ? true : options.attributes,
      childList: typeof options.childList === "undefined" ? true : options.childList,
      characterData: typeof options.characterData === "undefined" ? true : options.characterData
    });
    swiper2.observer.observers.push(observer);
  },
  init() {
    const swiper2 = this;
    if (!Support.observer || !swiper2.params.observer)
      return;
    if (swiper2.params.observeParents) {
      const containerParents = swiper2.$el.parents();
      for (let i = 0; i < containerParents.length; i += 1) {
        swiper2.observer.attach(containerParents[i]);
      }
    }
    swiper2.observer.attach(swiper2.$el[0], { childList: swiper2.params.observeSlideChildren });
    swiper2.observer.attach(swiper2.$wrapperEl[0], { attributes: false });
  },
  destroy() {
    const swiper2 = this;
    swiper2.observer.observers.forEach((observer) => {
      observer.disconnect();
    });
    swiper2.observer.observers = [];
  }
};
var Observer$1 = {
  name: "observer",
  params: {
    observer: false,
    observeParents: false,
    observeSlideChildren: false
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      observer: {
        init: Observer.init.bind(swiper2),
        attach: Observer.attach.bind(swiper2),
        destroy: Observer.destroy.bind(swiper2),
        observers: []
      }
    });
  },
  on: {
    init() {
      const swiper2 = this;
      swiper2.observer.init();
    },
    destroy() {
      const swiper2 = this;
      swiper2.observer.destroy();
    }
  }
};
const Virtual = {
  update(force) {
    const swiper2 = this;
    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper2.params;
    const { addSlidesBefore, addSlidesAfter } = swiper2.params.virtual;
    const {
      from: previousFrom,
      to: previousTo,
      slides,
      slidesGrid: previousSlidesGrid,
      renderSlide,
      offset: previousOffset
    } = swiper2.virtual;
    swiper2.updateActiveIndex();
    const activeIndex = swiper2.activeIndex || 0;
    let offsetProp;
    if (swiper2.rtlTranslate)
      offsetProp = "right";
    else
      offsetProp = swiper2.isHorizontal() ? "left" : "top";
    let slidesAfter;
    let slidesBefore;
    if (centeredSlides) {
      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
    } else {
      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
      slidesBefore = slidesPerGroup + addSlidesAfter;
    }
    const from = Math.max((activeIndex || 0) - slidesBefore, 0);
    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
    const offset2 = (swiper2.slidesGrid[from] || 0) - (swiper2.slidesGrid[0] || 0);
    Utils.extend(swiper2.virtual, {
      from,
      to,
      offset: offset2,
      slidesGrid: swiper2.slidesGrid
    });
    function onRendered() {
      swiper2.updateSlides();
      swiper2.updateProgress();
      swiper2.updateSlidesClasses();
      if (swiper2.lazy && swiper2.params.lazy.enabled) {
        swiper2.lazy.load();
      }
    }
    if (previousFrom === from && previousTo === to && !force) {
      if (swiper2.slidesGrid !== previousSlidesGrid && offset2 !== previousOffset) {
        swiper2.slides.css(offsetProp, `${offset2}px`);
      }
      swiper2.updateProgress();
      return;
    }
    if (swiper2.params.virtual.renderExternal) {
      swiper2.params.virtual.renderExternal.call(swiper2, {
        offset: offset2,
        from,
        to,
        slides: function getSlides() {
          const slidesToRender = [];
          for (let i = from; i <= to; i += 1) {
            slidesToRender.push(slides[i]);
          }
          return slidesToRender;
        }()
      });
      onRendered();
      return;
    }
    const prependIndexes = [];
    const appendIndexes = [];
    if (force) {
      swiper2.$wrapperEl.find(`.${swiper2.params.slideClass}`).remove();
    } else {
      for (let i = previousFrom; i <= previousTo; i += 1) {
        if (i < from || i > to) {
          swiper2.$wrapperEl.find(`.${swiper2.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
        }
      }
    }
    for (let i = 0; i < slides.length; i += 1) {
      if (i >= from && i <= to) {
        if (typeof previousTo === "undefined" || force) {
          appendIndexes.push(i);
        } else {
          if (i > previousTo)
            appendIndexes.push(i);
          if (i < previousFrom)
            prependIndexes.push(i);
        }
      }
    }
    appendIndexes.forEach((index2) => {
      swiper2.$wrapperEl.append(renderSlide(slides[index2], index2));
    });
    prependIndexes.sort((a, b) => b - a).forEach((index2) => {
      swiper2.$wrapperEl.prepend(renderSlide(slides[index2], index2));
    });
    swiper2.$wrapperEl.children(".swiper-slide").css(offsetProp, `${offset2}px`);
    onRendered();
  },
  renderSlide(slide2, index2) {
    const swiper2 = this;
    const params = swiper2.params.virtual;
    if (params.cache && swiper2.virtual.cache[index2]) {
      return swiper2.virtual.cache[index2];
    }
    const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper2, slide2, index2)) : $(`<div class="${swiper2.params.slideClass}" data-swiper-slide-index="${index2}">${slide2}</div>`);
    if (!$slideEl.attr("data-swiper-slide-index"))
      $slideEl.attr("data-swiper-slide-index", index2);
    if (params.cache)
      swiper2.virtual.cache[index2] = $slideEl;
    return $slideEl;
  },
  appendSlide(slides) {
    const swiper2 = this;
    if (typeof slides === "object" && "length" in slides) {
      for (let i = 0; i < slides.length; i += 1) {
        if (slides[i])
          swiper2.virtual.slides.push(slides[i]);
      }
    } else {
      swiper2.virtual.slides.push(slides);
    }
    swiper2.virtual.update(true);
  },
  prependSlide(slides) {
    const swiper2 = this;
    const activeIndex = swiper2.activeIndex;
    let newActiveIndex = activeIndex + 1;
    let numberOfNewSlides = 1;
    if (Array.isArray(slides)) {
      for (let i = 0; i < slides.length; i += 1) {
        if (slides[i])
          swiper2.virtual.slides.unshift(slides[i]);
      }
      newActiveIndex = activeIndex + slides.length;
      numberOfNewSlides = slides.length;
    } else {
      swiper2.virtual.slides.unshift(slides);
    }
    if (swiper2.params.virtual.cache) {
      const cache = swiper2.virtual.cache;
      const newCache = {};
      Object.keys(cache).forEach((cachedIndex) => {
        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex];
      });
      swiper2.virtual.cache = newCache;
    }
    swiper2.virtual.update(true);
    swiper2.slideTo(newActiveIndex, 0);
  },
  removeSlide(slidesIndexes) {
    const swiper2 = this;
    if (typeof slidesIndexes === "undefined" || slidesIndexes === null)
      return;
    let activeIndex = swiper2.activeIndex;
    if (Array.isArray(slidesIndexes)) {
      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
        swiper2.virtual.slides.splice(slidesIndexes[i], 1);
        if (swiper2.params.virtual.cache) {
          delete swiper2.virtual.cache[slidesIndexes[i]];
        }
        if (slidesIndexes[i] < activeIndex)
          activeIndex -= 1;
        activeIndex = Math.max(activeIndex, 0);
      }
    } else {
      swiper2.virtual.slides.splice(slidesIndexes, 1);
      if (swiper2.params.virtual.cache) {
        delete swiper2.virtual.cache[slidesIndexes];
      }
      if (slidesIndexes < activeIndex)
        activeIndex -= 1;
      activeIndex = Math.max(activeIndex, 0);
    }
    swiper2.virtual.update(true);
    swiper2.slideTo(activeIndex, 0);
  },
  removeAllSlides() {
    const swiper2 = this;
    swiper2.virtual.slides = [];
    if (swiper2.params.virtual.cache) {
      swiper2.virtual.cache = {};
    }
    swiper2.virtual.update(true);
    swiper2.slideTo(0, 0);
  }
};
var Virtual$1 = {
  name: "virtual",
  params: {
    virtual: {
      enabled: false,
      slides: [],
      cache: true,
      renderSlide: null,
      renderExternal: null,
      addSlidesBefore: 0,
      addSlidesAfter: 0
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      virtual: {
        update: Virtual.update.bind(swiper2),
        appendSlide: Virtual.appendSlide.bind(swiper2),
        prependSlide: Virtual.prependSlide.bind(swiper2),
        removeSlide: Virtual.removeSlide.bind(swiper2),
        removeAllSlides: Virtual.removeAllSlides.bind(swiper2),
        renderSlide: Virtual.renderSlide.bind(swiper2),
        slides: swiper2.params.virtual.slides,
        cache: {}
      }
    });
  },
  on: {
    beforeInit() {
      const swiper2 = this;
      if (!swiper2.params.virtual.enabled)
        return;
      swiper2.classNames.push(`${swiper2.params.containerModifierClass}virtual`);
      const overwriteParams = {
        watchSlidesProgress: true
      };
      Utils.extend(swiper2.params, overwriteParams);
      Utils.extend(swiper2.originalParams, overwriteParams);
      if (!swiper2.params.initialSlide) {
        swiper2.virtual.update();
      }
    },
    setTranslate() {
      const swiper2 = this;
      if (!swiper2.params.virtual.enabled)
        return;
      swiper2.virtual.update();
    }
  }
};
const Keyboard = {
  handle(event) {
    const swiper2 = this;
    const { rtlTranslate: rtl } = swiper2;
    let e = event;
    if (e.originalEvent)
      e = e.originalEvent;
    const kc = e.keyCode || e.charCode;
    if (!swiper2.allowSlideNext && (swiper2.isHorizontal() && kc === 39 || swiper2.isVertical() && kc === 40 || kc === 34)) {
      return false;
    }
    if (!swiper2.allowSlidePrev && (swiper2.isHorizontal() && kc === 37 || swiper2.isVertical() && kc === 38 || kc === 33)) {
      return false;
    }
    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
      return void 0;
    }
    if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === "input" || doc.activeElement.nodeName.toLowerCase() === "textarea")) {
      return void 0;
    }
    if (swiper2.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
      let inView = false;
      if (swiper2.$el.parents(`.${swiper2.params.slideClass}`).length > 0 && swiper2.$el.parents(`.${swiper2.params.slideActiveClass}`).length === 0) {
        return void 0;
      }
      const windowWidth = win.innerWidth;
      const windowHeight = win.innerHeight;
      const swiperOffset = swiper2.$el.offset();
      if (rtl)
        swiperOffset.left -= swiper2.$el[0].scrollLeft;
      const swiperCoord = [
        [swiperOffset.left, swiperOffset.top],
        [swiperOffset.left + swiper2.width, swiperOffset.top],
        [swiperOffset.left, swiperOffset.top + swiper2.height],
        [swiperOffset.left + swiper2.width, swiperOffset.top + swiper2.height]
      ];
      for (let i = 0; i < swiperCoord.length; i += 1) {
        const point = swiperCoord[i];
        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
          inView = true;
        }
      }
      if (!inView)
        return void 0;
    }
    if (swiper2.isHorizontal()) {
      if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {
        if (e.preventDefault)
          e.preventDefault();
        else
          e.returnValue = false;
      }
      if ((kc === 34 || kc === 39) && !rtl || (kc === 33 || kc === 37) && rtl)
        swiper2.slideNext();
      if ((kc === 33 || kc === 37) && !rtl || (kc === 34 || kc === 39) && rtl)
        swiper2.slidePrev();
    } else {
      if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {
        if (e.preventDefault)
          e.preventDefault();
        else
          e.returnValue = false;
      }
      if (kc === 34 || kc === 40)
        swiper2.slideNext();
      if (kc === 33 || kc === 38)
        swiper2.slidePrev();
    }
    swiper2.emit("keyPress", kc);
    return void 0;
  },
  enable() {
    const swiper2 = this;
    if (swiper2.keyboard.enabled)
      return;
    $(doc).on("keydown", swiper2.keyboard.handle);
    swiper2.keyboard.enabled = true;
  },
  disable() {
    const swiper2 = this;
    if (!swiper2.keyboard.enabled)
      return;
    $(doc).off("keydown", swiper2.keyboard.handle);
    swiper2.keyboard.enabled = false;
  }
};
var Keyboard$1 = {
  name: "keyboard",
  params: {
    keyboard: {
      enabled: false,
      onlyInViewport: true
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      keyboard: {
        enabled: false,
        enable: Keyboard.enable.bind(swiper2),
        disable: Keyboard.disable.bind(swiper2),
        handle: Keyboard.handle.bind(swiper2)
      }
    });
  },
  on: {
    init() {
      const swiper2 = this;
      if (swiper2.params.keyboard.enabled) {
        swiper2.keyboard.enable();
      }
    },
    destroy() {
      const swiper2 = this;
      if (swiper2.keyboard.enabled) {
        swiper2.keyboard.disable();
      }
    }
  }
};
function isEventSupported() {
  const eventName = "onwheel";
  let isSupported = eventName in doc;
  if (!isSupported) {
    const element = doc.createElement("div");
    element.setAttribute(eventName, "return;");
    isSupported = typeof element[eventName] === "function";
  }
  if (!isSupported && doc.implementation && doc.implementation.hasFeature && doc.implementation.hasFeature("", "") !== true) {
    isSupported = doc.implementation.hasFeature("Events.wheel", "3.0");
  }
  return isSupported;
}
const Mousewheel = {
  lastScrollTime: Utils.now(),
  event: function getEvent() {
    if (win.navigator.userAgent.indexOf("firefox") > -1)
      return "DOMMouseScroll";
    return isEventSupported() ? "wheel" : "mousewheel";
  }(),
  normalize(e) {
    const PIXEL_STEP = 10;
    const LINE_HEIGHT = 40;
    const PAGE_HEIGHT = 800;
    let sX = 0;
    let sY = 0;
    let pX = 0;
    let pY = 0;
    if ("detail" in e) {
      sY = e.detail;
    }
    if ("wheelDelta" in e) {
      sY = -e.wheelDelta / 120;
    }
    if ("wheelDeltaY" in e) {
      sY = -e.wheelDeltaY / 120;
    }
    if ("wheelDeltaX" in e) {
      sX = -e.wheelDeltaX / 120;
    }
    if ("axis" in e && e.axis === e.HORIZONTAL_AXIS) {
      sX = sY;
      sY = 0;
    }
    pX = sX * PIXEL_STEP;
    pY = sY * PIXEL_STEP;
    if ("deltaY" in e) {
      pY = e.deltaY;
    }
    if ("deltaX" in e) {
      pX = e.deltaX;
    }
    if ((pX || pY) && e.deltaMode) {
      if (e.deltaMode === 1) {
        pX *= LINE_HEIGHT;
        pY *= LINE_HEIGHT;
      } else {
        pX *= PAGE_HEIGHT;
        pY *= PAGE_HEIGHT;
      }
    }
    if (pX && !sX) {
      sX = pX < 1 ? -1 : 1;
    }
    if (pY && !sY) {
      sY = pY < 1 ? -1 : 1;
    }
    return {
      spinX: sX,
      spinY: sY,
      pixelX: pX,
      pixelY: pY
    };
  },
  handleMouseEnter() {
    const swiper2 = this;
    swiper2.mouseEntered = true;
  },
  handleMouseLeave() {
    const swiper2 = this;
    swiper2.mouseEntered = false;
  },
  handle(event) {
    let e = event;
    const swiper2 = this;
    const params = swiper2.params.mousewheel;
    if (!swiper2.mouseEntered && !params.releaseOnEdges)
      return true;
    if (e.originalEvent)
      e = e.originalEvent;
    let delta = 0;
    const rtlFactor = swiper2.rtlTranslate ? -1 : 1;
    const data2 = Mousewheel.normalize(e);
    if (params.forceToAxis) {
      if (swiper2.isHorizontal()) {
        if (Math.abs(data2.pixelX) > Math.abs(data2.pixelY))
          delta = data2.pixelX * rtlFactor;
        else
          return true;
      } else if (Math.abs(data2.pixelY) > Math.abs(data2.pixelX))
        delta = data2.pixelY;
      else
        return true;
    } else {
      delta = Math.abs(data2.pixelX) > Math.abs(data2.pixelY) ? -data2.pixelX * rtlFactor : -data2.pixelY;
    }
    if (delta === 0)
      return true;
    if (params.invert)
      delta = -delta;
    if (!swiper2.params.freeMode) {
      if (Utils.now() - swiper2.mousewheel.lastScrollTime > 60) {
        if (delta < 0) {
          if ((!swiper2.isEnd || swiper2.params.loop) && !swiper2.animating) {
            swiper2.slideNext();
            swiper2.emit("scroll", e);
          } else if (params.releaseOnEdges)
            return true;
        } else if ((!swiper2.isBeginning || swiper2.params.loop) && !swiper2.animating) {
          swiper2.slidePrev();
          swiper2.emit("scroll", e);
        } else if (params.releaseOnEdges)
          return true;
      }
      swiper2.mousewheel.lastScrollTime = new win.Date().getTime();
    } else {
      if (swiper2.params.loop) {
        swiper2.loopFix();
      }
      let position = swiper2.getTranslate() + delta * params.sensitivity;
      const wasBeginning = swiper2.isBeginning;
      const wasEnd = swiper2.isEnd;
      if (position >= swiper2.minTranslate())
        position = swiper2.minTranslate();
      if (position <= swiper2.maxTranslate())
        position = swiper2.maxTranslate();
      swiper2.setTransition(0);
      swiper2.setTranslate(position);
      swiper2.updateProgress();
      swiper2.updateActiveIndex();
      swiper2.updateSlidesClasses();
      if (!wasBeginning && swiper2.isBeginning || !wasEnd && swiper2.isEnd) {
        swiper2.updateSlidesClasses();
      }
      if (swiper2.params.freeModeSticky) {
        clearTimeout(swiper2.mousewheel.timeout);
        swiper2.mousewheel.timeout = Utils.nextTick(() => {
          swiper2.slideToClosest();
        }, 300);
      }
      swiper2.emit("scroll", e);
      if (swiper2.params.autoplay && swiper2.params.autoplayDisableOnInteraction)
        swiper2.autoplay.stop();
      if (position === swiper2.minTranslate() || position === swiper2.maxTranslate())
        return true;
    }
    if (e.preventDefault)
      e.preventDefault();
    else
      e.returnValue = false;
    return false;
  },
  enable() {
    const swiper2 = this;
    if (!Mousewheel.event)
      return false;
    if (swiper2.mousewheel.enabled)
      return false;
    let target = swiper2.$el;
    if (swiper2.params.mousewheel.eventsTarged !== "container") {
      target = $(swiper2.params.mousewheel.eventsTarged);
    }
    target.on("mouseenter", swiper2.mousewheel.handleMouseEnter);
    target.on("mouseleave", swiper2.mousewheel.handleMouseLeave);
    target.on(Mousewheel.event, swiper2.mousewheel.handle);
    swiper2.mousewheel.enabled = true;
    return true;
  },
  disable() {
    const swiper2 = this;
    if (!Mousewheel.event)
      return false;
    if (!swiper2.mousewheel.enabled)
      return false;
    let target = swiper2.$el;
    if (swiper2.params.mousewheel.eventsTarged !== "container") {
      target = $(swiper2.params.mousewheel.eventsTarged);
    }
    target.off(Mousewheel.event, swiper2.mousewheel.handle);
    swiper2.mousewheel.enabled = false;
    return true;
  }
};
var Mousewheel$1 = {
  name: "mousewheel",
  params: {
    mousewheel: {
      enabled: false,
      releaseOnEdges: false,
      invert: false,
      forceToAxis: false,
      sensitivity: 1,
      eventsTarged: "container"
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      mousewheel: {
        enabled: false,
        enable: Mousewheel.enable.bind(swiper2),
        disable: Mousewheel.disable.bind(swiper2),
        handle: Mousewheel.handle.bind(swiper2),
        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper2),
        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper2),
        lastScrollTime: Utils.now()
      }
    });
  },
  on: {
    init() {
      const swiper2 = this;
      if (swiper2.params.mousewheel.enabled)
        swiper2.mousewheel.enable();
    },
    destroy() {
      const swiper2 = this;
      if (swiper2.mousewheel.enabled)
        swiper2.mousewheel.disable();
    }
  }
};
const Navigation = {
  update() {
    const swiper2 = this;
    const params = swiper2.params.navigation;
    if (swiper2.params.loop)
      return;
    const { $nextEl, $prevEl } = swiper2.navigation;
    if ($prevEl && $prevEl.length > 0) {
      if (swiper2.isBeginning) {
        $prevEl.addClass(params.disabledClass);
      } else {
        $prevEl.removeClass(params.disabledClass);
      }
      $prevEl[swiper2.params.watchOverflow && swiper2.isLocked ? "addClass" : "removeClass"](params.lockClass);
    }
    if ($nextEl && $nextEl.length > 0) {
      if (swiper2.isEnd) {
        $nextEl.addClass(params.disabledClass);
      } else {
        $nextEl.removeClass(params.disabledClass);
      }
      $nextEl[swiper2.params.watchOverflow && swiper2.isLocked ? "addClass" : "removeClass"](params.lockClass);
    }
  },
  onPrevClick(e) {
    const swiper2 = this;
    e.preventDefault();
    if (swiper2.isBeginning && !swiper2.params.loop)
      return;
    swiper2.slidePrev();
  },
  onNextClick(e) {
    const swiper2 = this;
    e.preventDefault();
    if (swiper2.isEnd && !swiper2.params.loop)
      return;
    swiper2.slideNext();
  },
  init() {
    const swiper2 = this;
    const params = swiper2.params.navigation;
    if (!(params.nextEl || params.prevEl))
      return;
    let $nextEl;
    let $prevEl;
    if (params.nextEl) {
      $nextEl = $(params.nextEl);
      if (swiper2.params.uniqueNavElements && typeof params.nextEl === "string" && $nextEl.length > 1 && swiper2.$el.find(params.nextEl).length === 1) {
        $nextEl = swiper2.$el.find(params.nextEl);
      }
    }
    if (params.prevEl) {
      $prevEl = $(params.prevEl);
      if (swiper2.params.uniqueNavElements && typeof params.prevEl === "string" && $prevEl.length > 1 && swiper2.$el.find(params.prevEl).length === 1) {
        $prevEl = swiper2.$el.find(params.prevEl);
      }
    }
    if ($nextEl && $nextEl.length > 0) {
      $nextEl.on("click", swiper2.navigation.onNextClick);
    }
    if ($prevEl && $prevEl.length > 0) {
      $prevEl.on("click", swiper2.navigation.onPrevClick);
    }
    Utils.extend(swiper2.navigation, {
      $nextEl,
      nextEl: $nextEl && $nextEl[0],
      $prevEl,
      prevEl: $prevEl && $prevEl[0]
    });
  },
  destroy() {
    const swiper2 = this;
    const { $nextEl, $prevEl } = swiper2.navigation;
    if ($nextEl && $nextEl.length) {
      $nextEl.off("click", swiper2.navigation.onNextClick);
      $nextEl.removeClass(swiper2.params.navigation.disabledClass);
    }
    if ($prevEl && $prevEl.length) {
      $prevEl.off("click", swiper2.navigation.onPrevClick);
      $prevEl.removeClass(swiper2.params.navigation.disabledClass);
    }
  }
};
var Navigation$1 = {
  name: "navigation",
  params: {
    navigation: {
      nextEl: null,
      prevEl: null,
      hideOnClick: false,
      disabledClass: "swiper-button-disabled",
      hiddenClass: "swiper-button-hidden",
      lockClass: "swiper-button-lock"
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      navigation: {
        init: Navigation.init.bind(swiper2),
        update: Navigation.update.bind(swiper2),
        destroy: Navigation.destroy.bind(swiper2),
        onNextClick: Navigation.onNextClick.bind(swiper2),
        onPrevClick: Navigation.onPrevClick.bind(swiper2)
      }
    });
  },
  on: {
    init() {
      const swiper2 = this;
      swiper2.navigation.init();
      swiper2.navigation.update();
    },
    toEdge() {
      const swiper2 = this;
      swiper2.navigation.update();
    },
    fromEdge() {
      const swiper2 = this;
      swiper2.navigation.update();
    },
    destroy() {
      const swiper2 = this;
      swiper2.navigation.destroy();
    },
    click(e) {
      const swiper2 = this;
      const { $nextEl, $prevEl } = swiper2.navigation;
      if (swiper2.params.navigation.hideOnClick && !$(e.target).is($prevEl) && !$(e.target).is($nextEl)) {
        let isHidden;
        if ($nextEl) {
          isHidden = $nextEl.hasClass(swiper2.params.navigation.hiddenClass);
        } else if ($prevEl) {
          isHidden = $prevEl.hasClass(swiper2.params.navigation.hiddenClass);
        }
        if (isHidden === true) {
          swiper2.emit("navigationShow", swiper2);
        } else {
          swiper2.emit("navigationHide", swiper2);
        }
        if ($nextEl) {
          $nextEl.toggleClass(swiper2.params.navigation.hiddenClass);
        }
        if ($prevEl) {
          $prevEl.toggleClass(swiper2.params.navigation.hiddenClass);
        }
      }
    }
  }
};
const Pagination = {
  update() {
    const swiper2 = this;
    const rtl = swiper2.rtl;
    const params = swiper2.params.pagination;
    if (!params.el || !swiper2.pagination.el || !swiper2.pagination.$el || swiper2.pagination.$el.length === 0)
      return;
    const slidesLength = swiper2.virtual && swiper2.params.virtual.enabled ? swiper2.virtual.slides.length : swiper2.slides.length;
    const $el = swiper2.pagination.$el;
    let current;
    const total = swiper2.params.loop ? Math.ceil((slidesLength - swiper2.loopedSlides * 2) / swiper2.params.slidesPerGroup) : swiper2.snapGrid.length;
    if (swiper2.params.loop) {
      current = Math.ceil((swiper2.activeIndex - swiper2.loopedSlides) / swiper2.params.slidesPerGroup);
      if (current > slidesLength - 1 - swiper2.loopedSlides * 2) {
        current -= slidesLength - swiper2.loopedSlides * 2;
      }
      if (current > total - 1)
        current -= total;
      if (current < 0 && swiper2.params.paginationType !== "bullets")
        current = total + current;
    } else if (typeof swiper2.snapIndex !== "undefined") {
      current = swiper2.snapIndex;
    } else {
      current = swiper2.activeIndex || 0;
    }
    if (params.type === "bullets" && swiper2.pagination.bullets && swiper2.pagination.bullets.length > 0) {
      const bullets = swiper2.pagination.bullets;
      let firstIndex;
      let lastIndex;
      let midIndex;
      if (params.dynamicBullets) {
        swiper2.pagination.bulletSize = bullets.eq(0)[swiper2.isHorizontal() ? "outerWidth" : "outerHeight"](true);
        $el.css(swiper2.isHorizontal() ? "width" : "height", `${swiper2.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);
        if (params.dynamicMainBullets > 1 && swiper2.previousIndex !== void 0) {
          swiper2.pagination.dynamicBulletIndex += current - swiper2.previousIndex;
          if (swiper2.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {
            swiper2.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
          } else if (swiper2.pagination.dynamicBulletIndex < 0) {
            swiper2.pagination.dynamicBulletIndex = 0;
          }
        }
        firstIndex = current - swiper2.pagination.dynamicBulletIndex;
        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
        midIndex = (lastIndex + firstIndex) / 2;
      }
      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);
      if ($el.length > 1) {
        bullets.each((index2, bullet) => {
          const $bullet = $(bullet);
          const bulletIndex = $bullet.index();
          if (bulletIndex === current) {
            $bullet.addClass(params.bulletActiveClass);
          }
          if (params.dynamicBullets) {
            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
              $bullet.addClass(`${params.bulletActiveClass}-main`);
            }
            if (bulletIndex === firstIndex) {
              $bullet.prev().addClass(`${params.bulletActiveClass}-prev`).prev().addClass(`${params.bulletActiveClass}-prev-prev`);
            }
            if (bulletIndex === lastIndex) {
              $bullet.next().addClass(`${params.bulletActiveClass}-next`).next().addClass(`${params.bulletActiveClass}-next-next`);
            }
          }
        });
      } else {
        const $bullet = bullets.eq(current);
        $bullet.addClass(params.bulletActiveClass);
        if (params.dynamicBullets) {
          const $firstDisplayedBullet = bullets.eq(firstIndex);
          const $lastDisplayedBullet = bullets.eq(lastIndex);
          for (let i = firstIndex; i <= lastIndex; i += 1) {
            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);
          }
          $firstDisplayedBullet.prev().addClass(`${params.bulletActiveClass}-prev`).prev().addClass(`${params.bulletActiveClass}-prev-prev`);
          $lastDisplayedBullet.next().addClass(`${params.bulletActiveClass}-next`).next().addClass(`${params.bulletActiveClass}-next-next`);
        }
      }
      if (params.dynamicBullets) {
        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
        const bulletsOffset = (swiper2.pagination.bulletSize * dynamicBulletsLength - swiper2.pagination.bulletSize) / 2 - midIndex * swiper2.pagination.bulletSize;
        const offsetProp = rtl ? "right" : "left";
        bullets.css(swiper2.isHorizontal() ? offsetProp : "top", `${bulletsOffset}px`);
      }
    }
    if (params.type === "fraction") {
      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));
      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));
    }
    if (params.type === "progressbar") {
      let progressbarDirection;
      if (params.progressbarOpposite) {
        progressbarDirection = swiper2.isHorizontal() ? "vertical" : "horizontal";
      } else {
        progressbarDirection = swiper2.isHorizontal() ? "horizontal" : "vertical";
      }
      const scale = (current + 1) / total;
      let scaleX = 1;
      let scaleY = 1;
      if (progressbarDirection === "horizontal") {
        scaleX = scale;
      } else {
        scaleY = scale;
      }
      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper2.params.speed);
    }
    if (params.type === "custom" && params.renderCustom) {
      $el.html(params.renderCustom(swiper2, current + 1, total));
      swiper2.emit("paginationRender", swiper2, $el[0]);
    } else {
      swiper2.emit("paginationUpdate", swiper2, $el[0]);
    }
    $el[swiper2.params.watchOverflow && swiper2.isLocked ? "addClass" : "removeClass"](params.lockClass);
  },
  render() {
    const swiper2 = this;
    const params = swiper2.params.pagination;
    if (!params.el || !swiper2.pagination.el || !swiper2.pagination.$el || swiper2.pagination.$el.length === 0)
      return;
    const slidesLength = swiper2.virtual && swiper2.params.virtual.enabled ? swiper2.virtual.slides.length : swiper2.slides.length;
    const $el = swiper2.pagination.$el;
    let paginationHTML = "";
    if (params.type === "bullets") {
      const numberOfBullets = swiper2.params.loop ? Math.ceil((slidesLength - swiper2.loopedSlides * 2) / swiper2.params.slidesPerGroup) : swiper2.snapGrid.length;
      for (let i = 0; i < numberOfBullets; i += 1) {
        if (params.renderBullet) {
          paginationHTML += params.renderBullet.call(swiper2, i, params.bulletClass);
        } else {
          paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
        }
      }
      $el.html(paginationHTML);
      swiper2.pagination.bullets = $el.find(`.${params.bulletClass}`);
    }
    if (params.type === "fraction") {
      if (params.renderFraction) {
        paginationHTML = params.renderFraction.call(swiper2, params.currentClass, params.totalClass);
      } else {
        paginationHTML = `<span class="${params.currentClass}"></span> / <span class="${params.totalClass}"></span>`;
      }
      $el.html(paginationHTML);
    }
    if (params.type === "progressbar") {
      if (params.renderProgressbar) {
        paginationHTML = params.renderProgressbar.call(swiper2, params.progressbarFillClass);
      } else {
        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
      }
      $el.html(paginationHTML);
    }
    if (params.type !== "custom") {
      swiper2.emit("paginationRender", swiper2.pagination.$el[0]);
    }
  },
  init() {
    const swiper2 = this;
    const params = swiper2.params.pagination;
    if (!params.el)
      return;
    let $el = $(params.el);
    if ($el.length === 0)
      return;
    if (swiper2.params.uniqueNavElements && typeof params.el === "string" && $el.length > 1 && swiper2.$el.find(params.el).length === 1) {
      $el = swiper2.$el.find(params.el);
    }
    if (params.type === "bullets" && params.clickable) {
      $el.addClass(params.clickableClass);
    }
    $el.addClass(params.modifierClass + params.type);
    if (params.type === "bullets" && params.dynamicBullets) {
      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);
      swiper2.pagination.dynamicBulletIndex = 0;
      if (params.dynamicMainBullets < 1) {
        params.dynamicMainBullets = 1;
      }
    }
    if (params.type === "progressbar" && params.progressbarOpposite) {
      $el.addClass(params.progressbarOppositeClass);
    }
    if (params.clickable) {
      $el.on("click", `.${params.bulletClass}`, function onClick2(e) {
        e.preventDefault();
        let index2 = $(this).index() * swiper2.params.slidesPerGroup;
        if (swiper2.params.loop)
          index2 += swiper2.loopedSlides;
        swiper2.slideTo(index2);
      });
    }
    Utils.extend(swiper2.pagination, {
      $el,
      el: $el[0]
    });
  },
  destroy() {
    const swiper2 = this;
    const params = swiper2.params.pagination;
    if (!params.el || !swiper2.pagination.el || !swiper2.pagination.$el || swiper2.pagination.$el.length === 0)
      return;
    const $el = swiper2.pagination.$el;
    $el.removeClass(params.hiddenClass);
    $el.removeClass(params.modifierClass + params.type);
    if (swiper2.pagination.bullets)
      swiper2.pagination.bullets.removeClass(params.bulletActiveClass);
    if (params.clickable) {
      $el.off("click", `.${params.bulletClass}`);
    }
  }
};
var Pagination$1 = {
  name: "pagination",
  params: {
    pagination: {
      el: null,
      bulletElement: "span",
      clickable: false,
      hideOnClick: false,
      renderBullet: null,
      renderProgressbar: null,
      renderFraction: null,
      renderCustom: null,
      progressbarOpposite: false,
      type: "bullets",
      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
      dynamicBullets: false,
      dynamicMainBullets: 1,
      formatFractionCurrent: (number) => number,
      formatFractionTotal: (number) => number,
      bulletClass: "swiper-pagination-bullet",
      bulletActiveClass: "swiper-pagination-bullet-active",
      modifierClass: "swiper-pagination-",
      // NEW
      currentClass: "swiper-pagination-current",
      totalClass: "swiper-pagination-total",
      hiddenClass: "swiper-pagination-hidden",
      progressbarFillClass: "swiper-pagination-progressbar-fill",
      progressbarOppositeClass: "swiper-pagination-progressbar-opposite",
      clickableClass: "swiper-pagination-clickable",
      // NEW
      lockClass: "swiper-pagination-lock"
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      pagination: {
        init: Pagination.init.bind(swiper2),
        render: Pagination.render.bind(swiper2),
        update: Pagination.update.bind(swiper2),
        destroy: Pagination.destroy.bind(swiper2),
        dynamicBulletIndex: 0
      }
    });
  },
  on: {
    init() {
      const swiper2 = this;
      swiper2.pagination.init();
      swiper2.pagination.render();
      swiper2.pagination.update();
    },
    activeIndexChange() {
      const swiper2 = this;
      if (swiper2.params.loop) {
        swiper2.pagination.update();
      } else if (typeof swiper2.snapIndex === "undefined") {
        swiper2.pagination.update();
      }
    },
    snapIndexChange() {
      const swiper2 = this;
      if (!swiper2.params.loop) {
        swiper2.pagination.update();
      }
    },
    slidesLengthChange() {
      const swiper2 = this;
      if (swiper2.params.loop) {
        swiper2.pagination.render();
        swiper2.pagination.update();
      }
    },
    snapGridLengthChange() {
      const swiper2 = this;
      if (!swiper2.params.loop) {
        swiper2.pagination.render();
        swiper2.pagination.update();
      }
    },
    destroy() {
      const swiper2 = this;
      swiper2.pagination.destroy();
    },
    click(e) {
      const swiper2 = this;
      if (swiper2.params.pagination.el && swiper2.params.pagination.hideOnClick && swiper2.pagination.$el.length > 0 && !$(e.target).hasClass(swiper2.params.pagination.bulletClass)) {
        const isHidden = swiper2.pagination.$el.hasClass(swiper2.params.pagination.hiddenClass);
        if (isHidden === true) {
          swiper2.emit("paginationShow", swiper2);
        } else {
          swiper2.emit("paginationHide", swiper2);
        }
        swiper2.pagination.$el.toggleClass(swiper2.params.pagination.hiddenClass);
      }
    }
  }
};
const Scrollbar = {
  setTranslate() {
    const swiper2 = this;
    if (!swiper2.params.scrollbar.el || !swiper2.scrollbar.el)
      return;
    const { scrollbar, rtlTranslate: rtl, progress } = swiper2;
    const {
      dragSize,
      trackSize,
      $dragEl,
      $el
    } = scrollbar;
    const params = swiper2.params.scrollbar;
    let newSize = dragSize;
    let newPos = (trackSize - dragSize) * progress;
    if (rtl) {
      newPos = -newPos;
      if (newPos > 0) {
        newSize = dragSize - newPos;
        newPos = 0;
      } else if (-newPos + dragSize > trackSize) {
        newSize = trackSize + newPos;
      }
    } else if (newPos < 0) {
      newSize = dragSize + newPos;
      newPos = 0;
    } else if (newPos + dragSize > trackSize) {
      newSize = trackSize - newPos;
    }
    if (swiper2.isHorizontal()) {
      if (Support.transforms3d) {
        $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);
      } else {
        $dragEl.transform(`translateX(${newPos}px)`);
      }
      $dragEl[0].style.width = `${newSize}px`;
    } else {
      if (Support.transforms3d) {
        $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);
      } else {
        $dragEl.transform(`translateY(${newPos}px)`);
      }
      $dragEl[0].style.height = `${newSize}px`;
    }
    if (params.hide) {
      clearTimeout(swiper2.scrollbar.timeout);
      $el[0].style.opacity = 1;
      swiper2.scrollbar.timeout = setTimeout(() => {
        $el[0].style.opacity = 0;
        $el.transition(400);
      }, 1e3);
    }
  },
  setTransition(duration) {
    const swiper2 = this;
    if (!swiper2.params.scrollbar.el || !swiper2.scrollbar.el)
      return;
    swiper2.scrollbar.$dragEl.transition(duration);
  },
  updateSize() {
    const swiper2 = this;
    if (!swiper2.params.scrollbar.el || !swiper2.scrollbar.el)
      return;
    const { scrollbar } = swiper2;
    const { $dragEl, $el } = scrollbar;
    $dragEl[0].style.width = "";
    $dragEl[0].style.height = "";
    const trackSize = swiper2.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
    const divider = swiper2.size / swiper2.virtualSize;
    const moveDivider = divider * (trackSize / swiper2.size);
    let dragSize;
    if (swiper2.params.scrollbar.dragSize === "auto") {
      dragSize = trackSize * divider;
    } else {
      dragSize = parseInt(swiper2.params.scrollbar.dragSize, 10);
    }
    if (swiper2.isHorizontal()) {
      $dragEl[0].style.width = `${dragSize}px`;
    } else {
      $dragEl[0].style.height = `${dragSize}px`;
    }
    if (divider >= 1) {
      $el[0].style.display = "none";
    } else {
      $el[0].style.display = "";
    }
    if (swiper2.params.scrollbar.hide) {
      $el[0].style.opacity = 0;
    }
    Utils.extend(scrollbar, {
      trackSize,
      divider,
      moveDivider,
      dragSize
    });
    scrollbar.$el[swiper2.params.watchOverflow && swiper2.isLocked ? "addClass" : "removeClass"](swiper2.params.scrollbar.lockClass);
  },
  getPointerPosition(e) {
    const swiper2 = this;
    if (swiper2.isHorizontal()) {
      return e.type === "touchstart" || e.type === "touchmove" ? e.targetTouches[0].pageX : e.pageX || e.clientX;
    }
    return e.type === "touchstart" || e.type === "touchmove" ? e.targetTouches[0].pageY : e.pageY || e.clientY;
  },
  setDragPosition(e) {
    const swiper2 = this;
    const { scrollbar, rtlTranslate: rtl } = swiper2;
    const {
      $el,
      dragSize,
      trackSize,
      dragStartPos
    } = scrollbar;
    let positionRatio;
    positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper2.isHorizontal() ? "left" : "top"] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
    if (rtl) {
      positionRatio = 1 - positionRatio;
    }
    const position = swiper2.minTranslate() + (swiper2.maxTranslate() - swiper2.minTranslate()) * positionRatio;
    swiper2.updateProgress(position);
    swiper2.setTranslate(position);
    swiper2.updateActiveIndex();
    swiper2.updateSlidesClasses();
  },
  onDragStart(e) {
    const swiper2 = this;
    const params = swiper2.params.scrollbar;
    const { scrollbar, $wrapperEl } = swiper2;
    const { $el, $dragEl } = scrollbar;
    swiper2.scrollbar.isTouched = true;
    swiper2.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper2.isHorizontal() ? "left" : "top"] : null;
    e.preventDefault();
    e.stopPropagation();
    $wrapperEl.transition(100);
    $dragEl.transition(100);
    scrollbar.setDragPosition(e);
    clearTimeout(swiper2.scrollbar.dragTimeout);
    $el.transition(0);
    if (params.hide) {
      $el.css("opacity", 1);
    }
    swiper2.emit("scrollbarDragStart", e);
  },
  onDragMove(e) {
    const swiper2 = this;
    const { scrollbar, $wrapperEl } = swiper2;
    const { $el, $dragEl } = scrollbar;
    if (!swiper2.scrollbar.isTouched)
      return;
    if (e.preventDefault)
      e.preventDefault();
    else
      e.returnValue = false;
    scrollbar.setDragPosition(e);
    $wrapperEl.transition(0);
    $el.transition(0);
    $dragEl.transition(0);
    swiper2.emit("scrollbarDragMove", e);
  },
  onDragEnd(e) {
    const swiper2 = this;
    const params = swiper2.params.scrollbar;
    const { scrollbar } = swiper2;
    const { $el } = scrollbar;
    if (!swiper2.scrollbar.isTouched)
      return;
    swiper2.scrollbar.isTouched = false;
    if (params.hide) {
      clearTimeout(swiper2.scrollbar.dragTimeout);
      swiper2.scrollbar.dragTimeout = Utils.nextTick(() => {
        $el.css("opacity", 0);
        $el.transition(400);
      }, 1e3);
    }
    swiper2.emit("scrollbarDragEnd", e);
    if (params.snapOnRelease) {
      swiper2.slideToClosest();
    }
  },
  enableDraggable() {
    const swiper2 = this;
    if (!swiper2.params.scrollbar.el)
      return;
    const {
      scrollbar,
      touchEventsTouch,
      touchEventsDesktop,
      params
    } = swiper2;
    const $el = scrollbar.$el;
    const target = $el[0];
    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
    if (!Support.touch) {
      target.addEventListener(touchEventsDesktop.start, swiper2.scrollbar.onDragStart, activeListener);
      doc.addEventListener(touchEventsDesktop.move, swiper2.scrollbar.onDragMove, activeListener);
      doc.addEventListener(touchEventsDesktop.end, swiper2.scrollbar.onDragEnd, passiveListener);
    } else {
      target.addEventListener(touchEventsTouch.start, swiper2.scrollbar.onDragStart, activeListener);
      target.addEventListener(touchEventsTouch.move, swiper2.scrollbar.onDragMove, activeListener);
      target.addEventListener(touchEventsTouch.end, swiper2.scrollbar.onDragEnd, passiveListener);
    }
  },
  disableDraggable() {
    const swiper2 = this;
    if (!swiper2.params.scrollbar.el)
      return;
    const {
      scrollbar,
      touchEventsTouch,
      touchEventsDesktop,
      params
    } = swiper2;
    const $el = scrollbar.$el;
    const target = $el[0];
    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
    if (!Support.touch) {
      target.removeEventListener(touchEventsDesktop.start, swiper2.scrollbar.onDragStart, activeListener);
      doc.removeEventListener(touchEventsDesktop.move, swiper2.scrollbar.onDragMove, activeListener);
      doc.removeEventListener(touchEventsDesktop.end, swiper2.scrollbar.onDragEnd, passiveListener);
    } else {
      target.removeEventListener(touchEventsTouch.start, swiper2.scrollbar.onDragStart, activeListener);
      target.removeEventListener(touchEventsTouch.move, swiper2.scrollbar.onDragMove, activeListener);
      target.removeEventListener(touchEventsTouch.end, swiper2.scrollbar.onDragEnd, passiveListener);
    }
  },
  init() {
    const swiper2 = this;
    if (!swiper2.params.scrollbar.el)
      return;
    const { scrollbar, $el: $swiperEl } = swiper2;
    const params = swiper2.params.scrollbar;
    let $el = $(params.el);
    if (swiper2.params.uniqueNavElements && typeof params.el === "string" && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
      $el = $swiperEl.find(params.el);
    }
    let $dragEl = $el.find(`.${swiper2.params.scrollbar.dragClass}`);
    if ($dragEl.length === 0) {
      $dragEl = $(`<div class="${swiper2.params.scrollbar.dragClass}"></div>`);
      $el.append($dragEl);
    }
    Utils.extend(scrollbar, {
      $el,
      el: $el[0],
      $dragEl,
      dragEl: $dragEl[0]
    });
    if (params.draggable) {
      scrollbar.enableDraggable();
    }
  },
  destroy() {
    const swiper2 = this;
    swiper2.scrollbar.disableDraggable();
  }
};
var Scrollbar$1 = {
  name: "scrollbar",
  params: {
    scrollbar: {
      el: null,
      dragSize: "auto",
      hide: false,
      draggable: false,
      snapOnRelease: true,
      lockClass: "swiper-scrollbar-lock",
      dragClass: "swiper-scrollbar-drag"
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      scrollbar: {
        init: Scrollbar.init.bind(swiper2),
        destroy: Scrollbar.destroy.bind(swiper2),
        updateSize: Scrollbar.updateSize.bind(swiper2),
        setTranslate: Scrollbar.setTranslate.bind(swiper2),
        setTransition: Scrollbar.setTransition.bind(swiper2),
        enableDraggable: Scrollbar.enableDraggable.bind(swiper2),
        disableDraggable: Scrollbar.disableDraggable.bind(swiper2),
        setDragPosition: Scrollbar.setDragPosition.bind(swiper2),
        getPointerPosition: Scrollbar.getPointerPosition.bind(swiper2),
        onDragStart: Scrollbar.onDragStart.bind(swiper2),
        onDragMove: Scrollbar.onDragMove.bind(swiper2),
        onDragEnd: Scrollbar.onDragEnd.bind(swiper2),
        isTouched: false,
        timeout: null,
        dragTimeout: null
      }
    });
  },
  on: {
    init() {
      const swiper2 = this;
      swiper2.scrollbar.init();
      swiper2.scrollbar.updateSize();
      swiper2.scrollbar.setTranslate();
    },
    update() {
      const swiper2 = this;
      swiper2.scrollbar.updateSize();
    },
    resize() {
      const swiper2 = this;
      swiper2.scrollbar.updateSize();
    },
    observerUpdate() {
      const swiper2 = this;
      swiper2.scrollbar.updateSize();
    },
    setTranslate() {
      const swiper2 = this;
      swiper2.scrollbar.setTranslate();
    },
    setTransition(duration) {
      const swiper2 = this;
      swiper2.scrollbar.setTransition(duration);
    },
    destroy() {
      const swiper2 = this;
      swiper2.scrollbar.destroy();
    }
  }
};
const Parallax = {
  setTransform(el, progress) {
    const swiper2 = this;
    const { rtl } = swiper2;
    const $el = $(el);
    const rtlFactor = rtl ? -1 : 1;
    const p = $el.attr("data-swiper-parallax") || "0";
    let x = $el.attr("data-swiper-parallax-x");
    let y = $el.attr("data-swiper-parallax-y");
    const scale = $el.attr("data-swiper-parallax-scale");
    const opacity = $el.attr("data-swiper-parallax-opacity");
    if (x || y) {
      x = x || "0";
      y = y || "0";
    } else if (swiper2.isHorizontal()) {
      x = p;
      y = "0";
    } else {
      y = p;
      x = "0";
    }
    if (x.indexOf("%") >= 0) {
      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
    } else {
      x = `${x * progress * rtlFactor}px`;
    }
    if (y.indexOf("%") >= 0) {
      y = `${parseInt(y, 10) * progress}%`;
    } else {
      y = `${y * progress}px`;
    }
    if (typeof opacity !== "undefined" && opacity !== null) {
      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
      $el[0].style.opacity = currentOpacity;
    }
    if (typeof scale === "undefined" || scale === null) {
      $el.transform(`translate3d(${x}, ${y}, 0px)`);
    } else {
      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);
    }
  },
  setTranslate() {
    const swiper2 = this;
    const {
      $el,
      slides,
      progress,
      snapGrid
    } = swiper2;
    $el.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((index2, el) => {
      swiper2.parallax.setTransform(el, progress);
    });
    slides.each((slideIndex, slideEl) => {
      let slideProgress = slideEl.progress;
      if (swiper2.params.slidesPerGroup > 1 && swiper2.params.slidesPerView !== "auto") {
        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
      }
      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
      $(slideEl).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((index2, el) => {
        swiper2.parallax.setTransform(el, slideProgress);
      });
    });
  },
  setTransition(duration = this.params.speed) {
    const swiper2 = this;
    const { $el } = swiper2;
    $el.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((index2, parallaxEl) => {
      const $parallaxEl = $(parallaxEl);
      let parallaxDuration = parseInt($parallaxEl.attr("data-swiper-parallax-duration"), 10) || duration;
      if (duration === 0)
        parallaxDuration = 0;
      $parallaxEl.transition(parallaxDuration);
    });
  }
};
var Parallax$1 = {
  name: "parallax",
  params: {
    parallax: {
      enabled: false
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      parallax: {
        setTransform: Parallax.setTransform.bind(swiper2),
        setTranslate: Parallax.setTranslate.bind(swiper2),
        setTransition: Parallax.setTransition.bind(swiper2)
      }
    });
  },
  on: {
    beforeInit() {
      const swiper2 = this;
      if (!swiper2.params.parallax.enabled)
        return;
      swiper2.params.watchSlidesProgress = true;
      swiper2.originalParams.watchSlidesProgress = true;
    },
    init() {
      const swiper2 = this;
      if (!swiper2.params.parallax.enabled)
        return;
      swiper2.parallax.setTranslate();
    },
    setTranslate() {
      const swiper2 = this;
      if (!swiper2.params.parallax.enabled)
        return;
      swiper2.parallax.setTranslate();
    },
    setTransition(duration) {
      const swiper2 = this;
      if (!swiper2.params.parallax.enabled)
        return;
      swiper2.parallax.setTransition(duration);
    }
  }
};
const Zoom = {
  // Calc Scale From Multi-touches
  getDistanceBetweenTouches(e) {
    if (e.targetTouches.length < 2)
      return 1;
    const x1 = e.targetTouches[0].pageX;
    const y1 = e.targetTouches[0].pageY;
    const x2 = e.targetTouches[1].pageX;
    const y2 = e.targetTouches[1].pageY;
    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
    return distance;
  },
  // Events
  onGestureStart(e) {
    const swiper2 = this;
    const params = swiper2.params.zoom;
    const zoom = swiper2.zoom;
    const { gesture } = zoom;
    zoom.fakeGestureTouched = false;
    zoom.fakeGestureMoved = false;
    if (!Support.gestures) {
      if (e.type !== "touchstart" || e.type === "touchstart" && e.targetTouches.length < 2) {
        return;
      }
      zoom.fakeGestureTouched = true;
      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
    }
    if (!gesture.$slideEl || !gesture.$slideEl.length) {
      gesture.$slideEl = $(e.target).closest(".swiper-slide");
      if (gesture.$slideEl.length === 0)
        gesture.$slideEl = swiper2.slides.eq(swiper2.activeIndex);
      gesture.$imageEl = gesture.$slideEl.find("img, svg, canvas");
      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
      gesture.maxRatio = gesture.$imageWrapEl.attr("data-swiper-zoom") || params.maxRatio;
      if (gesture.$imageWrapEl.length === 0) {
        gesture.$imageEl = void 0;
        return;
      }
    }
    gesture.$imageEl.transition(0);
    swiper2.zoom.isScaling = true;
  },
  onGestureChange(e) {
    const swiper2 = this;
    const params = swiper2.params.zoom;
    const zoom = swiper2.zoom;
    const { gesture } = zoom;
    if (!Support.gestures) {
      if (e.type !== "touchmove" || e.type === "touchmove" && e.targetTouches.length < 2) {
        return;
      }
      zoom.fakeGestureMoved = true;
      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
    }
    if (!gesture.$imageEl || gesture.$imageEl.length === 0)
      return;
    if (Support.gestures) {
      zoom.scale = e.scale * zoom.currentScale;
    } else {
      zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;
    }
    if (zoom.scale > gesture.maxRatio) {
      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
    }
    if (zoom.scale < params.minRatio) {
      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
    }
    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);
  },
  onGestureEnd(e) {
    const swiper2 = this;
    const params = swiper2.params.zoom;
    const zoom = swiper2.zoom;
    const { gesture } = zoom;
    if (!Support.gestures) {
      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
        return;
      }
      if (e.type !== "touchend" || e.type === "touchend" && e.changedTouches.length < 2 && !Device.android) {
        return;
      }
      zoom.fakeGestureTouched = false;
      zoom.fakeGestureMoved = false;
    }
    if (!gesture.$imageEl || gesture.$imageEl.length === 0)
      return;
    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
    gesture.$imageEl.transition(swiper2.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
    zoom.currentScale = zoom.scale;
    zoom.isScaling = false;
    if (zoom.scale === 1)
      gesture.$slideEl = void 0;
  },
  onTouchStart(e) {
    const swiper2 = this;
    const zoom = swiper2.zoom;
    const { gesture, image } = zoom;
    if (!gesture.$imageEl || gesture.$imageEl.length === 0)
      return;
    if (image.isTouched)
      return;
    if (Device.android)
      e.preventDefault();
    image.isTouched = true;
    image.touchesStart.x = e.type === "touchstart" ? e.targetTouches[0].pageX : e.pageX;
    image.touchesStart.y = e.type === "touchstart" ? e.targetTouches[0].pageY : e.pageY;
  },
  onTouchMove(e) {
    const swiper2 = this;
    const zoom = swiper2.zoom;
    const { gesture, image, velocity } = zoom;
    if (!gesture.$imageEl || gesture.$imageEl.length === 0)
      return;
    swiper2.allowClick = false;
    if (!image.isTouched || !gesture.$slideEl)
      return;
    if (!image.isMoved) {
      image.width = gesture.$imageEl[0].offsetWidth;
      image.height = gesture.$imageEl[0].offsetHeight;
      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], "x") || 0;
      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], "y") || 0;
      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
      gesture.$imageWrapEl.transition(0);
      if (swiper2.rtl) {
        image.startX = -image.startX;
        image.startY = -image.startY;
      }
    }
    const scaledWidth = image.width * zoom.scale;
    const scaledHeight = image.height * zoom.scale;
    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight)
      return;
    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
    image.maxX = -image.minX;
    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
    image.maxY = -image.minY;
    image.touchesCurrent.x = e.type === "touchmove" ? e.targetTouches[0].pageX : e.pageX;
    image.touchesCurrent.y = e.type === "touchmove" ? e.targetTouches[0].pageY : e.pageY;
    if (!image.isMoved && !zoom.isScaling) {
      if (swiper2.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
        image.isTouched = false;
        return;
      }
      if (!swiper2.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
        image.isTouched = false;
        return;
      }
    }
    e.preventDefault();
    e.stopPropagation();
    image.isMoved = true;
    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
    if (image.currentX < image.minX) {
      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
    }
    if (image.currentX > image.maxX) {
      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
    }
    if (image.currentY < image.minY) {
      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
    }
    if (image.currentY > image.maxY) {
      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
    }
    if (!velocity.prevPositionX)
      velocity.prevPositionX = image.touchesCurrent.x;
    if (!velocity.prevPositionY)
      velocity.prevPositionY = image.touchesCurrent.y;
    if (!velocity.prevTime)
      velocity.prevTime = Date.now();
    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2)
      velocity.x = 0;
    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2)
      velocity.y = 0;
    velocity.prevPositionX = image.touchesCurrent.x;
    velocity.prevPositionY = image.touchesCurrent.y;
    velocity.prevTime = Date.now();
    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
  },
  onTouchEnd() {
    const swiper2 = this;
    const zoom = swiper2.zoom;
    const { gesture, image, velocity } = zoom;
    if (!gesture.$imageEl || gesture.$imageEl.length === 0)
      return;
    if (!image.isTouched || !image.isMoved) {
      image.isTouched = false;
      image.isMoved = false;
      return;
    }
    image.isTouched = false;
    image.isMoved = false;
    let momentumDurationX = 300;
    let momentumDurationY = 300;
    const momentumDistanceX = velocity.x * momentumDurationX;
    const newPositionX = image.currentX + momentumDistanceX;
    const momentumDistanceY = velocity.y * momentumDurationY;
    const newPositionY = image.currentY + momentumDistanceY;
    if (velocity.x !== 0)
      momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
    if (velocity.y !== 0)
      momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
    image.currentX = newPositionX;
    image.currentY = newPositionY;
    const scaledWidth = image.width * zoom.scale;
    const scaledHeight = image.height * zoom.scale;
    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
    image.maxX = -image.minX;
    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
    image.maxY = -image.minY;
    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
  },
  onTransitionEnd() {
    const swiper2 = this;
    const zoom = swiper2.zoom;
    const { gesture } = zoom;
    if (gesture.$slideEl && swiper2.previousIndex !== swiper2.activeIndex) {
      gesture.$imageEl.transform("translate3d(0,0,0) scale(1)");
      gesture.$imageWrapEl.transform("translate3d(0,0,0)");
      zoom.scale = 1;
      zoom.currentScale = 1;
      gesture.$slideEl = void 0;
      gesture.$imageEl = void 0;
      gesture.$imageWrapEl = void 0;
    }
  },
  // Toggle Zoom
  toggle(e) {
    const swiper2 = this;
    const zoom = swiper2.zoom;
    if (zoom.scale && zoom.scale !== 1) {
      zoom.out();
    } else {
      zoom.in(e);
    }
  },
  in(e) {
    const swiper2 = this;
    const zoom = swiper2.zoom;
    const params = swiper2.params.zoom;
    const { gesture, image } = zoom;
    if (!gesture.$slideEl) {
      gesture.$slideEl = swiper2.clickedSlide ? $(swiper2.clickedSlide) : swiper2.slides.eq(swiper2.activeIndex);
      gesture.$imageEl = gesture.$slideEl.find("img, svg, canvas");
      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
    }
    if (!gesture.$imageEl || gesture.$imageEl.length === 0)
      return;
    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);
    let touchX;
    let touchY;
    let offsetX;
    let offsetY;
    let diffX;
    let diffY;
    let translateX;
    let translateY;
    let imageWidth;
    let imageHeight;
    let scaledWidth;
    let scaledHeight;
    let translateMinX;
    let translateMinY;
    let translateMaxX;
    let translateMaxY;
    let slideWidth;
    let slideHeight;
    if (typeof image.touchesStart.x === "undefined" && e) {
      touchX = e.type === "touchend" ? e.changedTouches[0].pageX : e.pageX;
      touchY = e.type === "touchend" ? e.changedTouches[0].pageY : e.pageY;
    } else {
      touchX = image.touchesStart.x;
      touchY = image.touchesStart.y;
    }
    zoom.scale = gesture.$imageWrapEl.attr("data-swiper-zoom") || params.maxRatio;
    zoom.currentScale = gesture.$imageWrapEl.attr("data-swiper-zoom") || params.maxRatio;
    if (e) {
      slideWidth = gesture.$slideEl[0].offsetWidth;
      slideHeight = gesture.$slideEl[0].offsetHeight;
      offsetX = gesture.$slideEl.offset().left;
      offsetY = gesture.$slideEl.offset().top;
      diffX = offsetX + slideWidth / 2 - touchX;
      diffY = offsetY + slideHeight / 2 - touchY;
      imageWidth = gesture.$imageEl[0].offsetWidth;
      imageHeight = gesture.$imageEl[0].offsetHeight;
      scaledWidth = imageWidth * zoom.scale;
      scaledHeight = imageHeight * zoom.scale;
      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
      translateMaxX = -translateMinX;
      translateMaxY = -translateMinY;
      translateX = diffX * zoom.scale;
      translateY = diffY * zoom.scale;
      if (translateX < translateMinX) {
        translateX = translateMinX;
      }
      if (translateX > translateMaxX) {
        translateX = translateMaxX;
      }
      if (translateY < translateMinY) {
        translateY = translateMinY;
      }
      if (translateY > translateMaxY) {
        translateY = translateMaxY;
      }
    } else {
      translateX = 0;
      translateY = 0;
    }
    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);
    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
  },
  out() {
    const swiper2 = this;
    const zoom = swiper2.zoom;
    const params = swiper2.params.zoom;
    const { gesture } = zoom;
    if (!gesture.$slideEl) {
      gesture.$slideEl = swiper2.clickedSlide ? $(swiper2.clickedSlide) : swiper2.slides.eq(swiper2.activeIndex);
      gesture.$imageEl = gesture.$slideEl.find("img, svg, canvas");
      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
    }
    if (!gesture.$imageEl || gesture.$imageEl.length === 0)
      return;
    zoom.scale = 1;
    zoom.currentScale = 1;
    gesture.$imageWrapEl.transition(300).transform("translate3d(0,0,0)");
    gesture.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)");
    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);
    gesture.$slideEl = void 0;
  },
  // Attach/Detach Events
  enable() {
    const swiper2 = this;
    const zoom = swiper2.zoom;
    if (zoom.enabled)
      return;
    zoom.enabled = true;
    const passiveListener = swiper2.touchEvents.start === "touchstart" && Support.passiveListener && swiper2.params.passiveListeners ? { passive: true, capture: false } : false;
    if (Support.gestures) {
      swiper2.$wrapperEl.on("gesturestart", ".swiper-slide", zoom.onGestureStart, passiveListener);
      swiper2.$wrapperEl.on("gesturechange", ".swiper-slide", zoom.onGestureChange, passiveListener);
      swiper2.$wrapperEl.on("gestureend", ".swiper-slide", zoom.onGestureEnd, passiveListener);
    } else if (swiper2.touchEvents.start === "touchstart") {
      swiper2.$wrapperEl.on(swiper2.touchEvents.start, ".swiper-slide", zoom.onGestureStart, passiveListener);
      swiper2.$wrapperEl.on(swiper2.touchEvents.move, ".swiper-slide", zoom.onGestureChange, passiveListener);
      swiper2.$wrapperEl.on(swiper2.touchEvents.end, ".swiper-slide", zoom.onGestureEnd, passiveListener);
    }
    swiper2.$wrapperEl.on(swiper2.touchEvents.move, `.${swiper2.params.zoom.containerClass}`, zoom.onTouchMove);
  },
  disable() {
    const swiper2 = this;
    const zoom = swiper2.zoom;
    if (!zoom.enabled)
      return;
    swiper2.zoom.enabled = false;
    const passiveListener = swiper2.touchEvents.start === "touchstart" && Support.passiveListener && swiper2.params.passiveListeners ? { passive: true, capture: false } : false;
    if (Support.gestures) {
      swiper2.$wrapperEl.off("gesturestart", ".swiper-slide", zoom.onGestureStart, passiveListener);
      swiper2.$wrapperEl.off("gesturechange", ".swiper-slide", zoom.onGestureChange, passiveListener);
      swiper2.$wrapperEl.off("gestureend", ".swiper-slide", zoom.onGestureEnd, passiveListener);
    } else if (swiper2.touchEvents.start === "touchstart") {
      swiper2.$wrapperEl.off(swiper2.touchEvents.start, ".swiper-slide", zoom.onGestureStart, passiveListener);
      swiper2.$wrapperEl.off(swiper2.touchEvents.move, ".swiper-slide", zoom.onGestureChange, passiveListener);
      swiper2.$wrapperEl.off(swiper2.touchEvents.end, ".swiper-slide", zoom.onGestureEnd, passiveListener);
    }
    swiper2.$wrapperEl.off(swiper2.touchEvents.move, `.${swiper2.params.zoom.containerClass}`, zoom.onTouchMove);
  }
};
var Zoom$1 = {
  name: "zoom",
  params: {
    zoom: {
      enabled: false,
      maxRatio: 3,
      minRatio: 1,
      toggle: true,
      containerClass: "swiper-zoom-container",
      zoomedSlideClass: "swiper-slide-zoomed"
    }
  },
  create() {
    const swiper2 = this;
    const zoom = {
      enabled: false,
      scale: 1,
      currentScale: 1,
      isScaling: false,
      gesture: {
        $slideEl: void 0,
        slideWidth: void 0,
        slideHeight: void 0,
        $imageEl: void 0,
        $imageWrapEl: void 0,
        maxRatio: 3
      },
      image: {
        isTouched: void 0,
        isMoved: void 0,
        currentX: void 0,
        currentY: void 0,
        minX: void 0,
        minY: void 0,
        maxX: void 0,
        maxY: void 0,
        width: void 0,
        height: void 0,
        startX: void 0,
        startY: void 0,
        touchesStart: {},
        touchesCurrent: {}
      },
      velocity: {
        x: void 0,
        y: void 0,
        prevPositionX: void 0,
        prevPositionY: void 0,
        prevTime: void 0
      }
    };
    "onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out".split(" ").forEach((methodName) => {
      zoom[methodName] = Zoom[methodName].bind(swiper2);
    });
    Utils.extend(swiper2, {
      zoom
    });
    let scale = 1;
    Object.defineProperty(swiper2.zoom, "scale", {
      get() {
        return scale;
      },
      set(value) {
        if (scale !== value) {
          const imageEl = swiper2.zoom.gesture.$imageEl ? swiper2.zoom.gesture.$imageEl[0] : void 0;
          const slideEl = swiper2.zoom.gesture.$slideEl ? swiper2.zoom.gesture.$slideEl[0] : void 0;
          swiper2.emit("zoomChange", value, imageEl, slideEl);
        }
        scale = value;
      }
    });
  },
  on: {
    init() {
      const swiper2 = this;
      if (swiper2.params.zoom.enabled) {
        swiper2.zoom.enable();
      }
    },
    destroy() {
      const swiper2 = this;
      swiper2.zoom.disable();
    },
    touchStart(e) {
      const swiper2 = this;
      if (!swiper2.zoom.enabled)
        return;
      swiper2.zoom.onTouchStart(e);
    },
    touchEnd(e) {
      const swiper2 = this;
      if (!swiper2.zoom.enabled)
        return;
      swiper2.zoom.onTouchEnd(e);
    },
    doubleTap(e) {
      const swiper2 = this;
      if (swiper2.params.zoom.enabled && swiper2.zoom.enabled && swiper2.params.zoom.toggle) {
        swiper2.zoom.toggle(e);
      }
    },
    transitionEnd() {
      const swiper2 = this;
      if (swiper2.zoom.enabled && swiper2.params.zoom.enabled) {
        swiper2.zoom.onTransitionEnd();
      }
    }
  }
};
const Lazy = {
  loadInSlide(index2, loadInDuplicate = true) {
    const swiper2 = this;
    const params = swiper2.params.lazy;
    if (typeof index2 === "undefined")
      return;
    if (swiper2.slides.length === 0)
      return;
    const isVirtual = swiper2.virtual && swiper2.params.virtual.enabled;
    const $slideEl = isVirtual ? swiper2.$wrapperEl.children(`.${swiper2.params.slideClass}[data-swiper-slide-index="${index2}"]`) : swiper2.slides.eq(index2);
    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);
    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
      $images = $images.add($slideEl[0]);
    }
    if ($images.length === 0)
      return;
    $images.each((imageIndex, imageEl) => {
      const $imageEl = $(imageEl);
      $imageEl.addClass(params.loadingClass);
      const background = $imageEl.attr("data-background");
      const src = $imageEl.attr("data-src");
      const srcset = $imageEl.attr("data-srcset");
      const sizes = $imageEl.attr("data-sizes");
      swiper2.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {
        if (typeof swiper2 === "undefined" || swiper2 === null || !swiper2 || swiper2 && !swiper2.params || swiper2.destroyed)
          return;
        if (background) {
          $imageEl.css("background-image", `url("${background}")`);
          $imageEl.removeAttr("data-background");
        } else {
          if (srcset) {
            $imageEl.attr("srcset", srcset);
            $imageEl.removeAttr("data-srcset");
          }
          if (sizes) {
            $imageEl.attr("sizes", sizes);
            $imageEl.removeAttr("data-sizes");
          }
          if (src) {
            $imageEl.attr("src", src);
            $imageEl.removeAttr("data-src");
          }
        }
        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
        $slideEl.find(`.${params.preloaderClass}`).remove();
        if (swiper2.params.loop && loadInDuplicate) {
          const slideOriginalIndex = $slideEl.attr("data-swiper-slide-index");
          if ($slideEl.hasClass(swiper2.params.slideDuplicateClass)) {
            const originalSlide = swiper2.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper2.params.slideDuplicateClass})`);
            swiper2.lazy.loadInSlide(originalSlide.index(), false);
          } else {
            const duplicatedSlide = swiper2.$wrapperEl.children(`.${swiper2.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`);
            swiper2.lazy.loadInSlide(duplicatedSlide.index(), false);
          }
        }
        swiper2.emit("lazyImageReady", $slideEl[0], $imageEl[0]);
      });
      swiper2.emit("lazyImageLoad", $slideEl[0], $imageEl[0]);
    });
  },
  load() {
    const swiper2 = this;
    const {
      $wrapperEl,
      params: swiperParams,
      slides,
      activeIndex
    } = swiper2;
    const isVirtual = swiper2.virtual && swiperParams.virtual.enabled;
    const params = swiperParams.lazy;
    let slidesPerView = swiperParams.slidesPerView;
    if (slidesPerView === "auto") {
      slidesPerView = 0;
    }
    function slideExist(index2) {
      if (isVirtual) {
        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index2}"]`).length) {
          return true;
        }
      } else if (slides[index2])
        return true;
      return false;
    }
    function slideIndex(slideEl) {
      if (isVirtual) {
        return $(slideEl).attr("data-swiper-slide-index");
      }
      return $(slideEl).index();
    }
    if (!swiper2.lazy.initialImageLoaded)
      swiper2.lazy.initialImageLoaded = true;
    if (swiper2.params.watchSlidesVisibility) {
      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {
        const index2 = isVirtual ? $(slideEl).attr("data-swiper-slide-index") : $(slideEl).index();
        swiper2.lazy.loadInSlide(index2);
      });
    } else if (slidesPerView > 1) {
      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
        if (slideExist(i))
          swiper2.lazy.loadInSlide(i);
      }
    } else {
      swiper2.lazy.loadInSlide(activeIndex);
    }
    if (params.loadPrevNext) {
      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
        const amount = params.loadPrevNextAmount;
        const spv = slidesPerView;
        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {
          if (slideExist(i))
            swiper2.lazy.loadInSlide(i);
        }
        for (let i = minIndex; i < activeIndex; i += 1) {
          if (slideExist(i))
            swiper2.lazy.loadInSlide(i);
        }
      } else {
        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);
        if (nextSlide.length > 0)
          swiper2.lazy.loadInSlide(slideIndex(nextSlide));
        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);
        if (prevSlide.length > 0)
          swiper2.lazy.loadInSlide(slideIndex(prevSlide));
      }
    }
  }
};
var Lazy$1 = {
  name: "lazy",
  params: {
    lazy: {
      enabled: false,
      loadPrevNext: false,
      loadPrevNextAmount: 1,
      loadOnTransitionStart: false,
      elementClass: "swiper-lazy",
      loadingClass: "swiper-lazy-loading",
      loadedClass: "swiper-lazy-loaded",
      preloaderClass: "swiper-lazy-preloader"
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      lazy: {
        initialImageLoaded: false,
        load: Lazy.load.bind(swiper2),
        loadInSlide: Lazy.loadInSlide.bind(swiper2)
      }
    });
  },
  on: {
    beforeInit() {
      const swiper2 = this;
      if (swiper2.params.lazy.enabled && swiper2.params.preloadImages) {
        swiper2.params.preloadImages = false;
      }
    },
    init() {
      const swiper2 = this;
      if (swiper2.params.lazy.enabled && !swiper2.params.loop && swiper2.params.initialSlide === 0) {
        swiper2.lazy.load();
      }
    },
    scroll() {
      const swiper2 = this;
      if (swiper2.params.freeMode && !swiper2.params.freeModeSticky) {
        swiper2.lazy.load();
      }
    },
    resize() {
      const swiper2 = this;
      if (swiper2.params.lazy.enabled) {
        swiper2.lazy.load();
      }
    },
    scrollbarDragMove() {
      const swiper2 = this;
      if (swiper2.params.lazy.enabled) {
        swiper2.lazy.load();
      }
    },
    transitionStart() {
      const swiper2 = this;
      if (swiper2.params.lazy.enabled) {
        if (swiper2.params.lazy.loadOnTransitionStart || !swiper2.params.lazy.loadOnTransitionStart && !swiper2.lazy.initialImageLoaded) {
          swiper2.lazy.load();
        }
      }
    },
    transitionEnd() {
      const swiper2 = this;
      if (swiper2.params.lazy.enabled && !swiper2.params.lazy.loadOnTransitionStart) {
        swiper2.lazy.load();
      }
    }
  }
};
const Controller = {
  LinearSpline: function LinearSpline(x, y) {
    const binarySearch = function search() {
      let maxIndex;
      let minIndex;
      let guess;
      return (array, val) => {
        minIndex = -1;
        maxIndex = array.length;
        while (maxIndex - minIndex > 1) {
          guess = maxIndex + minIndex >> 1;
          if (array[guess] <= val) {
            minIndex = guess;
          } else {
            maxIndex = guess;
          }
        }
        return maxIndex;
      };
    }();
    this.x = x;
    this.y = y;
    this.lastIndex = x.length - 1;
    let i1;
    let i3;
    this.interpolate = function interpolate(x2) {
      if (!x2)
        return 0;
      i3 = binarySearch(this.x, x2);
      i1 = i3 - 1;
      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
    };
    return this;
  },
  // xxx: for now i will just save one spline function to to
  getInterpolateFunction(c) {
    const swiper2 = this;
    if (!swiper2.controller.spline) {
      swiper2.controller.spline = swiper2.params.loop ? new Controller.LinearSpline(swiper2.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper2.snapGrid, c.snapGrid);
    }
  },
  setTranslate(setTranslate2, byController) {
    const swiper2 = this;
    const controlled = swiper2.controller.control;
    let multiplier;
    let controlledTranslate;
    function setControlledTranslate(c) {
      const translate2 = swiper2.rtlTranslate ? -swiper2.translate : swiper2.translate;
      if (swiper2.params.controller.by === "slide") {
        swiper2.controller.getInterpolateFunction(c);
        controlledTranslate = -swiper2.controller.spline.interpolate(-translate2);
      }
      if (!controlledTranslate || swiper2.params.controller.by === "container") {
        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper2.maxTranslate() - swiper2.minTranslate());
        controlledTranslate = (translate2 - swiper2.minTranslate()) * multiplier + c.minTranslate();
      }
      if (swiper2.params.controller.inverse) {
        controlledTranslate = c.maxTranslate() - controlledTranslate;
      }
      c.updateProgress(controlledTranslate);
      c.setTranslate(controlledTranslate, swiper2);
      c.updateActiveIndex();
      c.updateSlidesClasses();
    }
    if (Array.isArray(controlled)) {
      for (let i = 0; i < controlled.length; i += 1) {
        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
          setControlledTranslate(controlled[i]);
        }
      }
    } else if (controlled instanceof Swiper && byController !== controlled) {
      setControlledTranslate(controlled);
    }
  },
  setTransition(duration, byController) {
    const swiper2 = this;
    const controlled = swiper2.controller.control;
    let i;
    function setControlledTransition(c) {
      c.setTransition(duration, swiper2);
      if (duration !== 0) {
        c.transitionStart();
        if (c.params.autoHeight) {
          Utils.nextTick(() => {
            c.updateAutoHeight();
          });
        }
        c.$wrapperEl.transitionEnd(() => {
          if (!controlled)
            return;
          if (c.params.loop && swiper2.params.controller.by === "slide") {
            c.loopFix();
          }
          c.transitionEnd();
        });
      }
    }
    if (Array.isArray(controlled)) {
      for (i = 0; i < controlled.length; i += 1) {
        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
          setControlledTransition(controlled[i]);
        }
      }
    } else if (controlled instanceof Swiper && byController !== controlled) {
      setControlledTransition(controlled);
    }
  }
};
var Controller$1 = {
  name: "controller",
  params: {
    controller: {
      control: void 0,
      inverse: false,
      by: "slide"
      // or 'container'
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      controller: {
        control: swiper2.params.controller.control,
        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper2),
        setTranslate: Controller.setTranslate.bind(swiper2),
        setTransition: Controller.setTransition.bind(swiper2)
      }
    });
  },
  on: {
    update() {
      const swiper2 = this;
      if (!swiper2.controller.control)
        return;
      if (swiper2.controller.spline) {
        swiper2.controller.spline = void 0;
        delete swiper2.controller.spline;
      }
    },
    resize() {
      const swiper2 = this;
      if (!swiper2.controller.control)
        return;
      if (swiper2.controller.spline) {
        swiper2.controller.spline = void 0;
        delete swiper2.controller.spline;
      }
    },
    observerUpdate() {
      const swiper2 = this;
      if (!swiper2.controller.control)
        return;
      if (swiper2.controller.spline) {
        swiper2.controller.spline = void 0;
        delete swiper2.controller.spline;
      }
    },
    setTranslate(translate2, byController) {
      const swiper2 = this;
      if (!swiper2.controller.control)
        return;
      swiper2.controller.setTranslate(translate2, byController);
    },
    setTransition(duration, byController) {
      const swiper2 = this;
      if (!swiper2.controller.control)
        return;
      swiper2.controller.setTransition(duration, byController);
    }
  }
};
const a11y = {
  makeElFocusable($el) {
    $el.attr("tabIndex", "0");
    return $el;
  },
  addElRole($el, role) {
    $el.attr("role", role);
    return $el;
  },
  addElLabel($el, label) {
    $el.attr("aria-label", label);
    return $el;
  },
  disableEl($el) {
    $el.attr("aria-disabled", true);
    return $el;
  },
  enableEl($el) {
    $el.attr("aria-disabled", false);
    return $el;
  },
  onEnterKey(e) {
    const swiper2 = this;
    const params = swiper2.params.a11y;
    if (e.keyCode !== 13)
      return;
    const $targetEl = $(e.target);
    if (swiper2.navigation && swiper2.navigation.$nextEl && $targetEl.is(swiper2.navigation.$nextEl)) {
      if (!(swiper2.isEnd && !swiper2.params.loop)) {
        swiper2.slideNext();
      }
      if (swiper2.isEnd) {
        swiper2.a11y.notify(params.lastSlideMessage);
      } else {
        swiper2.a11y.notify(params.nextSlideMessage);
      }
    }
    if (swiper2.navigation && swiper2.navigation.$prevEl && $targetEl.is(swiper2.navigation.$prevEl)) {
      if (!(swiper2.isBeginning && !swiper2.params.loop)) {
        swiper2.slidePrev();
      }
      if (swiper2.isBeginning) {
        swiper2.a11y.notify(params.firstSlideMessage);
      } else {
        swiper2.a11y.notify(params.prevSlideMessage);
      }
    }
    if (swiper2.pagination && $targetEl.is(`.${swiper2.params.pagination.bulletClass}`)) {
      $targetEl[0].click();
    }
  },
  notify(message) {
    const swiper2 = this;
    const notification = swiper2.a11y.liveRegion;
    if (notification.length === 0)
      return;
    notification.html("");
    notification.html(message);
  },
  updateNavigation() {
    const swiper2 = this;
    if (swiper2.params.loop)
      return;
    const { $nextEl, $prevEl } = swiper2.navigation;
    if ($prevEl && $prevEl.length > 0) {
      if (swiper2.isBeginning) {
        swiper2.a11y.disableEl($prevEl);
      } else {
        swiper2.a11y.enableEl($prevEl);
      }
    }
    if ($nextEl && $nextEl.length > 0) {
      if (swiper2.isEnd) {
        swiper2.a11y.disableEl($nextEl);
      } else {
        swiper2.a11y.enableEl($nextEl);
      }
    }
  },
  updatePagination() {
    const swiper2 = this;
    const params = swiper2.params.a11y;
    if (swiper2.pagination && swiper2.params.pagination.clickable && swiper2.pagination.bullets && swiper2.pagination.bullets.length) {
      swiper2.pagination.bullets.each((bulletIndex, bulletEl) => {
        const $bulletEl = $(bulletEl);
        swiper2.a11y.makeElFocusable($bulletEl);
        swiper2.a11y.addElRole($bulletEl, "button");
        swiper2.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));
      });
    }
  },
  init() {
    const swiper2 = this;
    swiper2.$el.append(swiper2.a11y.liveRegion);
    const params = swiper2.params.a11y;
    let $nextEl;
    let $prevEl;
    if (swiper2.navigation && swiper2.navigation.$nextEl) {
      $nextEl = swiper2.navigation.$nextEl;
    }
    if (swiper2.navigation && swiper2.navigation.$prevEl) {
      $prevEl = swiper2.navigation.$prevEl;
    }
    if ($nextEl) {
      swiper2.a11y.makeElFocusable($nextEl);
      swiper2.a11y.addElRole($nextEl, "button");
      swiper2.a11y.addElLabel($nextEl, params.nextSlideMessage);
      $nextEl.on("keydown", swiper2.a11y.onEnterKey);
    }
    if ($prevEl) {
      swiper2.a11y.makeElFocusable($prevEl);
      swiper2.a11y.addElRole($prevEl, "button");
      swiper2.a11y.addElLabel($prevEl, params.prevSlideMessage);
      $prevEl.on("keydown", swiper2.a11y.onEnterKey);
    }
    if (swiper2.pagination && swiper2.params.pagination.clickable && swiper2.pagination.bullets && swiper2.pagination.bullets.length) {
      swiper2.pagination.$el.on("keydown", `.${swiper2.params.pagination.bulletClass}`, swiper2.a11y.onEnterKey);
    }
  },
  destroy() {
    const swiper2 = this;
    if (swiper2.a11y.liveRegion && swiper2.a11y.liveRegion.length > 0)
      swiper2.a11y.liveRegion.remove();
    let $nextEl;
    let $prevEl;
    if (swiper2.navigation && swiper2.navigation.$nextEl) {
      $nextEl = swiper2.navigation.$nextEl;
    }
    if (swiper2.navigation && swiper2.navigation.$prevEl) {
      $prevEl = swiper2.navigation.$prevEl;
    }
    if ($nextEl) {
      $nextEl.off("keydown", swiper2.a11y.onEnterKey);
    }
    if ($prevEl) {
      $prevEl.off("keydown", swiper2.a11y.onEnterKey);
    }
    if (swiper2.pagination && swiper2.params.pagination.clickable && swiper2.pagination.bullets && swiper2.pagination.bullets.length) {
      swiper2.pagination.$el.off("keydown", `.${swiper2.params.pagination.bulletClass}`, swiper2.a11y.onEnterKey);
    }
  }
};
var A11y = {
  name: "a11y",
  params: {
    a11y: {
      enabled: true,
      notificationClass: "swiper-notification",
      prevSlideMessage: "Previous slide",
      nextSlideMessage: "Next slide",
      firstSlideMessage: "This is the first slide",
      lastSlideMessage: "This is the last slide",
      paginationBulletMessage: "Go to slide {{index}}"
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      a11y: {
        liveRegion: $(`<span class="${swiper2.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`)
      }
    });
    Object.keys(a11y).forEach((methodName) => {
      swiper2.a11y[methodName] = a11y[methodName].bind(swiper2);
    });
  },
  on: {
    init() {
      const swiper2 = this;
      if (!swiper2.params.a11y.enabled)
        return;
      swiper2.a11y.init();
      swiper2.a11y.updateNavigation();
    },
    toEdge() {
      const swiper2 = this;
      if (!swiper2.params.a11y.enabled)
        return;
      swiper2.a11y.updateNavigation();
    },
    fromEdge() {
      const swiper2 = this;
      if (!swiper2.params.a11y.enabled)
        return;
      swiper2.a11y.updateNavigation();
    },
    paginationUpdate() {
      const swiper2 = this;
      if (!swiper2.params.a11y.enabled)
        return;
      swiper2.a11y.updatePagination();
    },
    destroy() {
      const swiper2 = this;
      if (!swiper2.params.a11y.enabled)
        return;
      swiper2.a11y.destroy();
    }
  }
};
const History = {
  init() {
    const swiper2 = this;
    if (!swiper2.params.history)
      return;
    if (!win.history || !win.history.pushState) {
      swiper2.params.history.enabled = false;
      swiper2.params.hashNavigation.enabled = true;
      return;
    }
    const history = swiper2.history;
    history.initialized = true;
    history.paths = History.getPathValues();
    if (!history.paths.key && !history.paths.value)
      return;
    history.scrollToSlide(0, history.paths.value, swiper2.params.runCallbacksOnInit);
    if (!swiper2.params.history.replaceState) {
      win.addEventListener("popstate", swiper2.history.setHistoryPopState);
    }
  },
  destroy() {
    const swiper2 = this;
    if (!swiper2.params.history.replaceState) {
      win.removeEventListener("popstate", swiper2.history.setHistoryPopState);
    }
  },
  setHistoryPopState() {
    const swiper2 = this;
    swiper2.history.paths = History.getPathValues();
    swiper2.history.scrollToSlide(swiper2.params.speed, swiper2.history.paths.value, false);
  },
  getPathValues() {
    const pathArray = win.location.pathname.slice(1).split("/").filter((part) => part !== "");
    const total = pathArray.length;
    const key = pathArray[total - 2];
    const value = pathArray[total - 1];
    return { key, value };
  },
  setHistory(key, index2) {
    const swiper2 = this;
    if (!swiper2.history.initialized || !swiper2.params.history.enabled)
      return;
    const slide2 = swiper2.slides.eq(index2);
    let value = History.slugify(slide2.attr("data-history"));
    if (!win.location.pathname.includes(key)) {
      value = `${key}/${value}`;
    }
    const currentState = win.history.state;
    if (currentState && currentState.value === value) {
      return;
    }
    if (swiper2.params.history.replaceState) {
      win.history.replaceState({ value }, null, value);
    } else {
      win.history.pushState({ value }, null, value);
    }
  },
  slugify(text2) {
    return text2.toString().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, "");
  },
  scrollToSlide(speed, value, runCallbacks) {
    const swiper2 = this;
    if (value) {
      for (let i = 0, length = swiper2.slides.length; i < length; i += 1) {
        const slide2 = swiper2.slides.eq(i);
        const slideHistory = History.slugify(slide2.attr("data-history"));
        if (slideHistory === value && !slide2.hasClass(swiper2.params.slideDuplicateClass)) {
          const index2 = slide2.index();
          swiper2.slideTo(index2, speed, runCallbacks);
        }
      }
    } else {
      swiper2.slideTo(0, speed, runCallbacks);
    }
  }
};
var History$1 = {
  name: "history",
  params: {
    history: {
      enabled: false,
      replaceState: false,
      key: "slides"
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      history: {
        init: History.init.bind(swiper2),
        setHistory: History.setHistory.bind(swiper2),
        setHistoryPopState: History.setHistoryPopState.bind(swiper2),
        scrollToSlide: History.scrollToSlide.bind(swiper2),
        destroy: History.destroy.bind(swiper2)
      }
    });
  },
  on: {
    init() {
      const swiper2 = this;
      if (swiper2.params.history.enabled) {
        swiper2.history.init();
      }
    },
    destroy() {
      const swiper2 = this;
      if (swiper2.params.history.enabled) {
        swiper2.history.destroy();
      }
    },
    transitionEnd() {
      const swiper2 = this;
      if (swiper2.history.initialized) {
        swiper2.history.setHistory(swiper2.params.history.key, swiper2.activeIndex);
      }
    }
  }
};
const HashNavigation = {
  onHashCange() {
    const swiper2 = this;
    const newHash = doc.location.hash.replace("#", "");
    const activeSlideHash = swiper2.slides.eq(swiper2.activeIndex).attr("data-hash");
    if (newHash !== activeSlideHash) {
      const newIndex = swiper2.$wrapperEl.children(`.${swiper2.params.slideClass}[data-hash="${newHash}"]`).index();
      if (typeof newIndex === "undefined")
        return;
      swiper2.slideTo(newIndex);
    }
  },
  setHash() {
    const swiper2 = this;
    if (!swiper2.hashNavigation.initialized || !swiper2.params.hashNavigation.enabled)
      return;
    if (swiper2.params.hashNavigation.replaceState && win.history && win.history.replaceState) {
      win.history.replaceState(null, null, `#${swiper2.slides.eq(swiper2.activeIndex).attr("data-hash")}` || "");
    } else {
      const slide2 = swiper2.slides.eq(swiper2.activeIndex);
      const hash = slide2.attr("data-hash") || slide2.attr("data-history");
      doc.location.hash = hash || "";
    }
  },
  init() {
    const swiper2 = this;
    if (!swiper2.params.hashNavigation.enabled || swiper2.params.history && swiper2.params.history.enabled)
      return;
    swiper2.hashNavigation.initialized = true;
    const hash = doc.location.hash.replace("#", "");
    if (hash) {
      const speed = 0;
      for (let i = 0, length = swiper2.slides.length; i < length; i += 1) {
        const slide2 = swiper2.slides.eq(i);
        const slideHash = slide2.attr("data-hash") || slide2.attr("data-history");
        if (slideHash === hash && !slide2.hasClass(swiper2.params.slideDuplicateClass)) {
          const index2 = slide2.index();
          swiper2.slideTo(index2, speed, swiper2.params.runCallbacksOnInit, true);
        }
      }
    }
    if (swiper2.params.hashNavigation.watchState) {
      $(win).on("hashchange", swiper2.hashNavigation.onHashCange);
    }
  },
  destroy() {
    const swiper2 = this;
    if (swiper2.params.hashNavigation.watchState) {
      $(win).off("hashchange", swiper2.hashNavigation.onHashCange);
    }
  }
};
var HashNavigation$1 = {
  name: "hash-navigation",
  params: {
    hashNavigation: {
      enabled: false,
      replaceState: false,
      watchState: false
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      hashNavigation: {
        initialized: false,
        init: HashNavigation.init.bind(swiper2),
        destroy: HashNavigation.destroy.bind(swiper2),
        setHash: HashNavigation.setHash.bind(swiper2),
        onHashCange: HashNavigation.onHashCange.bind(swiper2)
      }
    });
  },
  on: {
    init() {
      const swiper2 = this;
      if (swiper2.params.hashNavigation.enabled) {
        swiper2.hashNavigation.init();
      }
    },
    destroy() {
      const swiper2 = this;
      if (swiper2.params.hashNavigation.enabled) {
        swiper2.hashNavigation.destroy();
      }
    },
    transitionEnd() {
      const swiper2 = this;
      if (swiper2.hashNavigation.initialized) {
        swiper2.hashNavigation.setHash();
      }
    }
  }
};
const Autoplay = {
  run() {
    const swiper2 = this;
    const $activeSlideEl = swiper2.slides.eq(swiper2.activeIndex);
    let delay = swiper2.params.autoplay.delay;
    if ($activeSlideEl.attr("data-swiper-autoplay")) {
      delay = $activeSlideEl.attr("data-swiper-autoplay") || swiper2.params.autoplay.delay;
    }
    clearTimeout(swiper2.autoplay.timeout);
    swiper2.autoplay.timeout = Utils.nextTick(() => {
      if (swiper2.params.autoplay.reverseDirection) {
        if (swiper2.params.loop) {
          swiper2.loopFix();
          swiper2.slidePrev(swiper2.params.speed, true, true);
          swiper2.emit("autoplay");
        } else if (!swiper2.isBeginning) {
          swiper2.slidePrev(swiper2.params.speed, true, true);
          swiper2.emit("autoplay");
        } else if (!swiper2.params.autoplay.stopOnLastSlide) {
          swiper2.slideTo(swiper2.slides.length - 1, swiper2.params.speed, true, true);
          swiper2.emit("autoplay");
        } else {
          swiper2.autoplay.stop();
        }
      } else if (swiper2.params.loop) {
        swiper2.loopFix();
        swiper2.slideNext(swiper2.params.speed, true, true);
        swiper2.emit("autoplay");
      } else if (!swiper2.isEnd) {
        swiper2.slideNext(swiper2.params.speed, true, true);
        swiper2.emit("autoplay");
      } else if (!swiper2.params.autoplay.stopOnLastSlide) {
        swiper2.slideTo(0, swiper2.params.speed, true, true);
        swiper2.emit("autoplay");
      } else {
        swiper2.autoplay.stop();
      }
    }, delay);
  },
  start() {
    const swiper2 = this;
    if (typeof swiper2.autoplay.timeout !== "undefined")
      return false;
    if (swiper2.autoplay.running)
      return false;
    swiper2.autoplay.running = true;
    swiper2.emit("autoplayStart");
    swiper2.autoplay.run();
    return true;
  },
  stop() {
    const swiper2 = this;
    if (!swiper2.autoplay.running)
      return false;
    if (typeof swiper2.autoplay.timeout === "undefined")
      return false;
    if (swiper2.autoplay.timeout) {
      clearTimeout(swiper2.autoplay.timeout);
      swiper2.autoplay.timeout = void 0;
    }
    swiper2.autoplay.running = false;
    swiper2.emit("autoplayStop");
    return true;
  },
  pause(speed) {
    const swiper2 = this;
    if (!swiper2.autoplay.running)
      return;
    if (swiper2.autoplay.paused)
      return;
    if (swiper2.autoplay.timeout)
      clearTimeout(swiper2.autoplay.timeout);
    swiper2.autoplay.paused = true;
    if (speed === 0 || !swiper2.params.autoplay.waitForTransition) {
      swiper2.autoplay.paused = false;
      swiper2.autoplay.run();
    } else {
      swiper2.$wrapperEl[0].addEventListener("transitionend", swiper2.autoplay.onTransitionEnd);
      swiper2.$wrapperEl[0].addEventListener("webkitTransitionEnd", swiper2.autoplay.onTransitionEnd);
    }
  }
};
var Autoplay$1 = {
  name: "autoplay",
  params: {
    autoplay: {
      enabled: false,
      delay: 3e3,
      waitForTransition: true,
      disableOnInteraction: true,
      stopOnLastSlide: false,
      reverseDirection: false
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      autoplay: {
        running: false,
        paused: false,
        run: Autoplay.run.bind(swiper2),
        start: Autoplay.start.bind(swiper2),
        stop: Autoplay.stop.bind(swiper2),
        pause: Autoplay.pause.bind(swiper2),
        onTransitionEnd(e) {
          if (!swiper2 || swiper2.destroyed || !swiper2.$wrapperEl)
            return;
          if (e.target !== this)
            return;
          swiper2.$wrapperEl[0].removeEventListener("transitionend", swiper2.autoplay.onTransitionEnd);
          swiper2.$wrapperEl[0].removeEventListener("webkitTransitionEnd", swiper2.autoplay.onTransitionEnd);
          swiper2.autoplay.paused = false;
          if (!swiper2.autoplay.running) {
            swiper2.autoplay.stop();
          } else {
            swiper2.autoplay.run();
          }
        }
      }
    });
  },
  on: {
    init() {
      const swiper2 = this;
      if (swiper2.params.autoplay.enabled) {
        swiper2.autoplay.start();
      }
    },
    beforeTransitionStart(speed, internal) {
      const swiper2 = this;
      if (swiper2.autoplay.running) {
        if (internal || !swiper2.params.autoplay.disableOnInteraction) {
          swiper2.autoplay.pause(speed);
        } else {
          swiper2.autoplay.stop();
        }
      }
    },
    sliderFirstMove() {
      const swiper2 = this;
      if (swiper2.autoplay.running) {
        if (swiper2.params.autoplay.disableOnInteraction) {
          swiper2.autoplay.stop();
        } else {
          swiper2.autoplay.pause();
        }
      }
    },
    destroy() {
      const swiper2 = this;
      if (swiper2.autoplay.running) {
        swiper2.autoplay.stop();
      }
    }
  }
};
const Fade = {
  setTranslate() {
    const swiper2 = this;
    const { slides } = swiper2;
    for (let i = 0; i < slides.length; i += 1) {
      const $slideEl = swiper2.slides.eq(i);
      const offset2 = $slideEl[0].swiperSlideOffset;
      let tx = -offset2;
      if (!swiper2.params.virtualTranslate)
        tx -= swiper2.translate;
      let ty = 0;
      if (!swiper2.isHorizontal()) {
        ty = tx;
        tx = 0;
      }
      const slideOpacity = swiper2.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
      $slideEl.css({
        opacity: slideOpacity
      }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);
    }
  },
  setTransition(duration) {
    const swiper2 = this;
    const { slides, $wrapperEl } = swiper2;
    slides.transition(duration);
    if (swiper2.params.virtualTranslate && duration !== 0) {
      let eventTriggered = false;
      slides.transitionEnd(() => {
        if (eventTriggered)
          return;
        if (!swiper2 || swiper2.destroyed)
          return;
        eventTriggered = true;
        swiper2.animating = false;
        const triggerEvents = ["webkitTransitionEnd", "transitionend"];
        for (let i = 0; i < triggerEvents.length; i += 1) {
          $wrapperEl.trigger(triggerEvents[i]);
        }
      });
    }
  }
};
var EffectFade = {
  name: "effect-fade",
  params: {
    fadeEffect: {
      crossFade: false
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      fadeEffect: {
        setTranslate: Fade.setTranslate.bind(swiper2),
        setTransition: Fade.setTransition.bind(swiper2)
      }
    });
  },
  on: {
    beforeInit() {
      const swiper2 = this;
      if (swiper2.params.effect !== "fade")
        return;
      swiper2.classNames.push(`${swiper2.params.containerModifierClass}fade`);
      const overwriteParams = {
        slidesPerView: 1,
        slidesPerColumn: 1,
        slidesPerGroup: 1,
        watchSlidesProgress: true,
        spaceBetween: 0,
        virtualTranslate: true
      };
      Utils.extend(swiper2.params, overwriteParams);
      Utils.extend(swiper2.originalParams, overwriteParams);
    },
    setTranslate() {
      const swiper2 = this;
      if (swiper2.params.effect !== "fade")
        return;
      swiper2.fadeEffect.setTranslate();
    },
    setTransition(duration) {
      const swiper2 = this;
      if (swiper2.params.effect !== "fade")
        return;
      swiper2.fadeEffect.setTransition(duration);
    }
  }
};
const Cube = {
  setTranslate() {
    const swiper2 = this;
    const {
      $el,
      $wrapperEl,
      slides,
      width: swiperWidth,
      height: swiperHeight,
      rtlTranslate: rtl,
      size: swiperSize
    } = swiper2;
    const params = swiper2.params.cubeEffect;
    const isHorizontal = swiper2.isHorizontal();
    const isVirtual = swiper2.virtual && swiper2.params.virtual.enabled;
    let wrapperRotate = 0;
    let $cubeShadowEl;
    if (params.shadow) {
      if (isHorizontal) {
        $cubeShadowEl = $wrapperEl.find(".swiper-cube-shadow");
        if ($cubeShadowEl.length === 0) {
          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
          $wrapperEl.append($cubeShadowEl);
        }
        $cubeShadowEl.css({ height: `${swiperWidth}px` });
      } else {
        $cubeShadowEl = $el.find(".swiper-cube-shadow");
        if ($cubeShadowEl.length === 0) {
          $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
          $el.append($cubeShadowEl);
        }
      }
    }
    for (let i = 0; i < slides.length; i += 1) {
      const $slideEl = slides.eq(i);
      let slideIndex = i;
      if (isVirtual) {
        slideIndex = parseInt($slideEl.attr("data-swiper-slide-index"), 10);
      }
      let slideAngle = slideIndex * 90;
      let round = Math.floor(slideAngle / 360);
      if (rtl) {
        slideAngle = -slideAngle;
        round = Math.floor(-slideAngle / 360);
      }
      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
      let tx = 0;
      let ty = 0;
      let tz = 0;
      if (slideIndex % 4 === 0) {
        tx = -round * 4 * swiperSize;
        tz = 0;
      } else if ((slideIndex - 1) % 4 === 0) {
        tx = 0;
        tz = -round * 4 * swiperSize;
      } else if ((slideIndex - 2) % 4 === 0) {
        tx = swiperSize + round * 4 * swiperSize;
        tz = swiperSize;
      } else if ((slideIndex - 3) % 4 === 0) {
        tx = -swiperSize;
        tz = 3 * swiperSize + swiperSize * 4 * round;
      }
      if (rtl) {
        tx = -tx;
      }
      if (!isHorizontal) {
        ty = tx;
        tx = 0;
      }
      const transform2 = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
      if (progress <= 1 && progress > -1) {
        wrapperRotate = slideIndex * 90 + progress * 90;
        if (rtl)
          wrapperRotate = -slideIndex * 90 - progress * 90;
      }
      $slideEl.transform(transform2);
      if (params.slideShadows) {
        let shadowBefore = isHorizontal ? $slideEl.find(".swiper-slide-shadow-left") : $slideEl.find(".swiper-slide-shadow-top");
        let shadowAfter = isHorizontal ? $slideEl.find(".swiper-slide-shadow-right") : $slideEl.find(".swiper-slide-shadow-bottom");
        if (shadowBefore.length === 0) {
          shadowBefore = $(`<div class="swiper-slide-shadow-${isHorizontal ? "left" : "top"}"></div>`);
          $slideEl.append(shadowBefore);
        }
        if (shadowAfter.length === 0) {
          shadowAfter = $(`<div class="swiper-slide-shadow-${isHorizontal ? "right" : "bottom"}"></div>`);
          $slideEl.append(shadowAfter);
        }
        if (shadowBefore.length)
          shadowBefore[0].style.opacity = Math.max(-progress, 0);
        if (shadowAfter.length)
          shadowAfter[0].style.opacity = Math.max(progress, 0);
      }
    }
    $wrapperEl.css({
      "-webkit-transform-origin": `50% 50% -${swiperSize / 2}px`,
      "-moz-transform-origin": `50% 50% -${swiperSize / 2}px`,
      "-ms-transform-origin": `50% 50% -${swiperSize / 2}px`,
      "transform-origin": `50% 50% -${swiperSize / 2}px`
    });
    if (params.shadow) {
      if (isHorizontal) {
        $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);
      } else {
        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
        const scale1 = params.shadowScale;
        const scale2 = params.shadowScale / multiplier;
        const offset2 = params.shadowOffset;
        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset2}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);
      }
    }
    const zFactor = Browser.isSafari || Browser.isUiWebView ? -swiperSize / 2 : 0;
    $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper2.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper2.isHorizontal() ? -wrapperRotate : 0}deg)`);
  },
  setTransition(duration) {
    const swiper2 = this;
    const { $el, slides } = swiper2;
    slides.transition(duration).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(duration);
    if (swiper2.params.cubeEffect.shadow && !swiper2.isHorizontal()) {
      $el.find(".swiper-cube-shadow").transition(duration);
    }
  }
};
var EffectCube = {
  name: "effect-cube",
  params: {
    cubeEffect: {
      slideShadows: true,
      shadow: true,
      shadowOffset: 20,
      shadowScale: 0.94
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      cubeEffect: {
        setTranslate: Cube.setTranslate.bind(swiper2),
        setTransition: Cube.setTransition.bind(swiper2)
      }
    });
  },
  on: {
    beforeInit() {
      const swiper2 = this;
      if (swiper2.params.effect !== "cube")
        return;
      swiper2.classNames.push(`${swiper2.params.containerModifierClass}cube`);
      swiper2.classNames.push(`${swiper2.params.containerModifierClass}3d`);
      const overwriteParams = {
        slidesPerView: 1,
        slidesPerColumn: 1,
        slidesPerGroup: 1,
        watchSlidesProgress: true,
        resistanceRatio: 0,
        spaceBetween: 0,
        centeredSlides: false,
        virtualTranslate: true
      };
      Utils.extend(swiper2.params, overwriteParams);
      Utils.extend(swiper2.originalParams, overwriteParams);
    },
    setTranslate() {
      const swiper2 = this;
      if (swiper2.params.effect !== "cube")
        return;
      swiper2.cubeEffect.setTranslate();
    },
    setTransition(duration) {
      const swiper2 = this;
      if (swiper2.params.effect !== "cube")
        return;
      swiper2.cubeEffect.setTransition(duration);
    }
  }
};
const Flip = {
  setTranslate() {
    const swiper2 = this;
    const { slides, rtlTranslate: rtl } = swiper2;
    for (let i = 0; i < slides.length; i += 1) {
      const $slideEl = slides.eq(i);
      let progress = $slideEl[0].progress;
      if (swiper2.params.flipEffect.limitRotation) {
        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
      }
      const offset2 = $slideEl[0].swiperSlideOffset;
      const rotate = -180 * progress;
      let rotateY = rotate;
      let rotateX = 0;
      let tx = -offset2;
      let ty = 0;
      if (!swiper2.isHorizontal()) {
        ty = tx;
        tx = 0;
        rotateX = -rotateY;
        rotateY = 0;
      } else if (rtl) {
        rotateY = -rotateY;
      }
      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
      if (swiper2.params.flipEffect.slideShadows) {
        let shadowBefore = swiper2.isHorizontal() ? $slideEl.find(".swiper-slide-shadow-left") : $slideEl.find(".swiper-slide-shadow-top");
        let shadowAfter = swiper2.isHorizontal() ? $slideEl.find(".swiper-slide-shadow-right") : $slideEl.find(".swiper-slide-shadow-bottom");
        if (shadowBefore.length === 0) {
          shadowBefore = $(`<div class="swiper-slide-shadow-${swiper2.isHorizontal() ? "left" : "top"}"></div>`);
          $slideEl.append(shadowBefore);
        }
        if (shadowAfter.length === 0) {
          shadowAfter = $(`<div class="swiper-slide-shadow-${swiper2.isHorizontal() ? "right" : "bottom"}"></div>`);
          $slideEl.append(shadowAfter);
        }
        if (shadowBefore.length)
          shadowBefore[0].style.opacity = Math.max(-progress, 0);
        if (shadowAfter.length)
          shadowAfter[0].style.opacity = Math.max(progress, 0);
      }
      $slideEl.transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);
    }
  },
  setTransition(duration) {
    const swiper2 = this;
    const { slides, activeIndex, $wrapperEl } = swiper2;
    slides.transition(duration).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(duration);
    if (swiper2.params.virtualTranslate && duration !== 0) {
      let eventTriggered = false;
      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
        if (eventTriggered)
          return;
        if (!swiper2 || swiper2.destroyed)
          return;
        eventTriggered = true;
        swiper2.animating = false;
        const triggerEvents = ["webkitTransitionEnd", "transitionend"];
        for (let i = 0; i < triggerEvents.length; i += 1) {
          $wrapperEl.trigger(triggerEvents[i]);
        }
      });
    }
  }
};
var EffectFlip = {
  name: "effect-flip",
  params: {
    flipEffect: {
      slideShadows: true,
      limitRotation: true
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      flipEffect: {
        setTranslate: Flip.setTranslate.bind(swiper2),
        setTransition: Flip.setTransition.bind(swiper2)
      }
    });
  },
  on: {
    beforeInit() {
      const swiper2 = this;
      if (swiper2.params.effect !== "flip")
        return;
      swiper2.classNames.push(`${swiper2.params.containerModifierClass}flip`);
      swiper2.classNames.push(`${swiper2.params.containerModifierClass}3d`);
      const overwriteParams = {
        slidesPerView: 1,
        slidesPerColumn: 1,
        slidesPerGroup: 1,
        watchSlidesProgress: true,
        spaceBetween: 0,
        virtualTranslate: true
      };
      Utils.extend(swiper2.params, overwriteParams);
      Utils.extend(swiper2.originalParams, overwriteParams);
    },
    setTranslate() {
      const swiper2 = this;
      if (swiper2.params.effect !== "flip")
        return;
      swiper2.flipEffect.setTranslate();
    },
    setTransition(duration) {
      const swiper2 = this;
      if (swiper2.params.effect !== "flip")
        return;
      swiper2.flipEffect.setTransition(duration);
    }
  }
};
const Coverflow = {
  setTranslate() {
    const swiper2 = this;
    const {
      width: swiperWidth,
      height: swiperHeight,
      slides,
      $wrapperEl,
      slidesSizesGrid
    } = swiper2;
    const params = swiper2.params.coverflowEffect;
    const isHorizontal = swiper2.isHorizontal();
    const transform2 = swiper2.translate;
    const center = isHorizontal ? -transform2 + swiperWidth / 2 : -transform2 + swiperHeight / 2;
    const rotate = isHorizontal ? params.rotate : -params.rotate;
    const translate2 = params.depth;
    for (let i = 0, length = slides.length; i < length; i += 1) {
      const $slideEl = slides.eq(i);
      const slideSize = slidesSizesGrid[i];
      const slideOffset = $slideEl[0].swiperSlideOffset;
      const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;
      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
      let translateZ = -translate2 * Math.abs(offsetMultiplier);
      let translateY = isHorizontal ? 0 : params.stretch * offsetMultiplier;
      let translateX = isHorizontal ? params.stretch * offsetMultiplier : 0;
      if (Math.abs(translateX) < 1e-3)
        translateX = 0;
      if (Math.abs(translateY) < 1e-3)
        translateY = 0;
      if (Math.abs(translateZ) < 1e-3)
        translateZ = 0;
      if (Math.abs(rotateY) < 1e-3)
        rotateY = 0;
      if (Math.abs(rotateX) < 1e-3)
        rotateX = 0;
      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
      $slideEl.transform(slideTransform);
      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
      if (params.slideShadows) {
        let $shadowBeforeEl = isHorizontal ? $slideEl.find(".swiper-slide-shadow-left") : $slideEl.find(".swiper-slide-shadow-top");
        let $shadowAfterEl = isHorizontal ? $slideEl.find(".swiper-slide-shadow-right") : $slideEl.find(".swiper-slide-shadow-bottom");
        if ($shadowBeforeEl.length === 0) {
          $shadowBeforeEl = $(`<div class="swiper-slide-shadow-${isHorizontal ? "left" : "top"}"></div>`);
          $slideEl.append($shadowBeforeEl);
        }
        if ($shadowAfterEl.length === 0) {
          $shadowAfterEl = $(`<div class="swiper-slide-shadow-${isHorizontal ? "right" : "bottom"}"></div>`);
          $slideEl.append($shadowAfterEl);
        }
        if ($shadowBeforeEl.length)
          $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
        if ($shadowAfterEl.length)
          $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
      }
    }
    if (Support.pointerEvents || Support.prefixedPointerEvents) {
      const ws = $wrapperEl[0].style;
      ws.perspectiveOrigin = `${center}px 50%`;
    }
  },
  setTransition(duration) {
    const swiper2 = this;
    swiper2.slides.transition(duration).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(duration);
  }
};
var EffectCoverflow = {
  name: "effect-coverflow",
  params: {
    coverflowEffect: {
      rotate: 50,
      stretch: 0,
      depth: 100,
      modifier: 1,
      slideShadows: true
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      coverflowEffect: {
        setTranslate: Coverflow.setTranslate.bind(swiper2),
        setTransition: Coverflow.setTransition.bind(swiper2)
      }
    });
  },
  on: {
    beforeInit() {
      const swiper2 = this;
      if (swiper2.params.effect !== "coverflow")
        return;
      swiper2.classNames.push(`${swiper2.params.containerModifierClass}coverflow`);
      swiper2.classNames.push(`${swiper2.params.containerModifierClass}3d`);
      swiper2.params.watchSlidesProgress = true;
      swiper2.originalParams.watchSlidesProgress = true;
    },
    setTranslate() {
      const swiper2 = this;
      if (swiper2.params.effect !== "coverflow")
        return;
      swiper2.coverflowEffect.setTranslate();
    },
    setTransition(duration) {
      const swiper2 = this;
      if (swiper2.params.effect !== "coverflow")
        return;
      swiper2.coverflowEffect.setTransition(duration);
    }
  }
};
const Thumbs = {
  init() {
    const swiper2 = this;
    const { thumbs: thumbsParams } = swiper2.params;
    const SwiperClass2 = swiper2.constructor;
    if (thumbsParams.swiper instanceof SwiperClass2) {
      swiper2.thumbs.swiper = thumbsParams.swiper;
      Utils.extend(swiper2.thumbs.swiper.originalParams, {
        watchSlidesProgress: true,
        slideToClickedSlide: false
      });
      Utils.extend(swiper2.thumbs.swiper.params, {
        watchSlidesProgress: true,
        slideToClickedSlide: false
      });
    } else if (Utils.isObject(thumbsParams.swiper)) {
      swiper2.thumbs.swiper = new SwiperClass2(Utils.extend({}, thumbsParams.swiper, {
        watchSlidesVisibility: true,
        watchSlidesProgress: true,
        slideToClickedSlide: false
      }));
      swiper2.thumbs.swiperCreated = true;
    }
    swiper2.thumbs.swiper.$el.addClass(swiper2.params.thumbs.thumbsContainerClass);
    swiper2.thumbs.swiper.on("tap", swiper2.thumbs.onThumbClick);
  },
  onThumbClick() {
    const swiper2 = this;
    const thumbsSwiper = swiper2.thumbs.swiper;
    if (!thumbsSwiper)
      return;
    const clickedIndex = thumbsSwiper.clickedIndex;
    const clickedSlide = thumbsSwiper.clickedSlide;
    if (clickedSlide && $(clickedSlide).hasClass(swiper2.params.thumbs.slideThumbActiveClass))
      return;
    if (typeof clickedIndex === "undefined" || clickedIndex === null)
      return;
    let slideToIndex;
    if (thumbsSwiper.params.loop) {
      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr("data-swiper-slide-index"), 10);
    } else {
      slideToIndex = clickedIndex;
    }
    if (swiper2.params.loop) {
      let currentIndex = swiper2.activeIndex;
      if (swiper2.slides.eq(currentIndex).hasClass(swiper2.params.slideDuplicateClass)) {
        swiper2.loopFix();
        swiper2._clientLeft = swiper2.$wrapperEl[0].clientLeft;
        currentIndex = swiper2.activeIndex;
      }
      const prevIndex = swiper2.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
      const nextIndex = swiper2.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
      if (typeof prevIndex === "undefined")
        slideToIndex = nextIndex;
      else if (typeof nextIndex === "undefined")
        slideToIndex = prevIndex;
      else if (nextIndex - currentIndex < currentIndex - prevIndex)
        slideToIndex = nextIndex;
      else
        slideToIndex = prevIndex;
    }
    swiper2.slideTo(slideToIndex);
  },
  update(initial) {
    const swiper2 = this;
    const thumbsSwiper = swiper2.thumbs.swiper;
    if (!thumbsSwiper)
      return;
    const slidesPerView = thumbsSwiper.params.slidesPerView === "auto" ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
    if (swiper2.realIndex !== thumbsSwiper.realIndex) {
      let currentThumbsIndex = thumbsSwiper.activeIndex;
      let newThumbsIndex;
      if (thumbsSwiper.params.loop) {
        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
          thumbsSwiper.loopFix();
          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
          currentThumbsIndex = thumbsSwiper.activeIndex;
        }
        const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper2.realIndex}"]`).eq(0).index();
        const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper2.realIndex}"]`).eq(0).index();
        if (typeof prevThumbsIndex === "undefined")
          newThumbsIndex = nextThumbsIndex;
        else if (typeof nextThumbsIndex === "undefined")
          newThumbsIndex = prevThumbsIndex;
        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex)
          newThumbsIndex = currentThumbsIndex;
        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex)
          newThumbsIndex = nextThumbsIndex;
        else
          newThumbsIndex = prevThumbsIndex;
      } else {
        newThumbsIndex = swiper2.realIndex;
      }
      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
        if (thumbsSwiper.params.centeredSlides) {
          if (newThumbsIndex > currentThumbsIndex) {
            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
          } else {
            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
          }
        } else if (newThumbsIndex > currentThumbsIndex) {
          newThumbsIndex = newThumbsIndex - slidesPerView + 1;
        }
        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : void 0);
      }
    }
    let thumbsToActivate = 1;
    const thumbActiveClass = swiper2.params.thumbs.slideThumbActiveClass;
    if (swiper2.params.slidesPerView > 1 && !swiper2.params.centeredSlides) {
      thumbsToActivate = swiper2.params.slidesPerView;
    }
    thumbsSwiper.slides.removeClass(thumbActiveClass);
    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual) {
      for (let i = 0; i < thumbsToActivate; i += 1) {
        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper2.realIndex + i}"]`).addClass(thumbActiveClass);
      }
    } else {
      for (let i = 0; i < thumbsToActivate; i += 1) {
        thumbsSwiper.slides.eq(swiper2.realIndex + i).addClass(thumbActiveClass);
      }
    }
  }
};
var Thumbs$1 = {
  name: "thumbs",
  params: {
    thumbs: {
      swiper: null,
      slideThumbActiveClass: "swiper-slide-thumb-active",
      thumbsContainerClass: "swiper-container-thumbs"
    }
  },
  create() {
    const swiper2 = this;
    Utils.extend(swiper2, {
      thumbs: {
        swiper: null,
        init: Thumbs.init.bind(swiper2),
        update: Thumbs.update.bind(swiper2),
        onThumbClick: Thumbs.onThumbClick.bind(swiper2)
      }
    });
  },
  on: {
    beforeInit() {
      const swiper2 = this;
      const { thumbs } = swiper2.params;
      if (!thumbs || !thumbs.swiper)
        return;
      swiper2.thumbs.init();
      swiper2.thumbs.update(true);
    },
    slideChange() {
      const swiper2 = this;
      if (!swiper2.thumbs.swiper)
        return;
      swiper2.thumbs.update();
    },
    update() {
      const swiper2 = this;
      if (!swiper2.thumbs.swiper)
        return;
      swiper2.thumbs.update();
    },
    resize() {
      const swiper2 = this;
      if (!swiper2.thumbs.swiper)
        return;
      swiper2.thumbs.update();
    },
    observerUpdate() {
      const swiper2 = this;
      if (!swiper2.thumbs.swiper)
        return;
      swiper2.thumbs.update();
    },
    setTransition(duration) {
      const swiper2 = this;
      const thumbsSwiper = swiper2.thumbs.swiper;
      if (!thumbsSwiper)
        return;
      thumbsSwiper.setTransition(duration);
    },
    beforeDestroy() {
      const swiper2 = this;
      const thumbsSwiper = swiper2.thumbs.swiper;
      if (!thumbsSwiper)
        return;
      if (swiper2.thumbs.swiperCreated && thumbsSwiper) {
        thumbsSwiper.destroy();
      }
    }
  }
};
const components = [
  Device$1,
  Support$1,
  Browser$1,
  Resize,
  Observer$1,
  Virtual$1,
  Keyboard$1,
  Mousewheel$1,
  Navigation$1,
  Pagination$1,
  Scrollbar$1,
  Parallax$1,
  Zoom$1,
  Lazy$1,
  Controller$1,
  A11y,
  History$1,
  HashNavigation$1,
  Autoplay$1,
  EffectFade,
  EffectCube,
  EffectFlip,
  EffectCoverflow,
  Thumbs$1
];
if (typeof Swiper.use === "undefined") {
  Swiper.use = Swiper.Class.use;
  Swiper.installModule = Swiper.Class.installModule;
}
Swiper.use(components);
var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
const freeGlobal$1 = freeGlobal;
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
var root = freeGlobal$1 || freeSelf || Function("return this")();
const root$1 = root;
var Symbol$1 = root$1.Symbol;
const Symbol$2 = Symbol$1;
var objectProto$b = Object.prototype;
var hasOwnProperty$8 = objectProto$b.hasOwnProperty;
var nativeObjectToString$1 = objectProto$b.toString;
var symToStringTag$1 = Symbol$2 ? Symbol$2.toStringTag : void 0;
function getRawTag(value) {
  var isOwn = hasOwnProperty$8.call(value, symToStringTag$1), tag = value[symToStringTag$1];
  try {
    value[symToStringTag$1] = void 0;
    var unmasked = true;
  } catch (e) {
  }
  var result = nativeObjectToString$1.call(value);
  if (unmasked) {
    if (isOwn) {
      value[symToStringTag$1] = tag;
    } else {
      delete value[symToStringTag$1];
    }
  }
  return result;
}
var objectProto$a = Object.prototype;
var nativeObjectToString = objectProto$a.toString;
function objectToString(value) {
  return nativeObjectToString.call(value);
}
var nullTag = "[object Null]", undefinedTag = "[object Undefined]";
var symToStringTag = Symbol$2 ? Symbol$2.toStringTag : void 0;
function baseGetTag(value) {
  if (value == null) {
    return value === void 0 ? undefinedTag : nullTag;
  }
  return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
}
function isObjectLike(value) {
  return value != null && typeof value == "object";
}
var symbolTag$1 = "[object Symbol]";
function isSymbol(value) {
  return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$1;
}
function arrayMap(array, iteratee) {
  var index2 = -1, length = array == null ? 0 : array.length, result = Array(length);
  while (++index2 < length) {
    result[index2] = iteratee(array[index2], index2, array);
  }
  return result;
}
var isArray = Array.isArray;
const isArray$1 = isArray;
var INFINITY$2 = 1 / 0;
var symbolProto$1 = Symbol$2 ? Symbol$2.prototype : void 0, symbolToString = symbolProto$1 ? symbolProto$1.toString : void 0;
function baseToString(value) {
  if (typeof value == "string") {
    return value;
  }
  if (isArray$1(value)) {
    return arrayMap(value, baseToString) + "";
  }
  if (isSymbol(value)) {
    return symbolToString ? symbolToString.call(value) : "";
  }
  var result = value + "";
  return result == "0" && 1 / value == -INFINITY$2 ? "-0" : result;
}
var reWhitespace = /\s/;
function trimmedEndIndex(string) {
  var index2 = string.length;
  while (index2-- && reWhitespace.test(string.charAt(index2))) {
  }
  return index2;
}
var reTrimStart = /^\s+/;
function baseTrim(string) {
  return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
}
function isObject(value) {
  var type = typeof value;
  return value != null && (type == "object" || type == "function");
}
var NAN = 0 / 0;
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
var reIsBinary = /^0b[01]+$/i;
var reIsOctal = /^0o[0-7]+$/i;
var freeParseInt = parseInt;
function toNumber(value) {
  if (typeof value == "number") {
    return value;
  }
  if (isSymbol(value)) {
    return NAN;
  }
  if (isObject(value)) {
    var other = typeof value.valueOf == "function" ? value.valueOf() : value;
    value = isObject(other) ? other + "" : other;
  }
  if (typeof value != "string") {
    return value === 0 ? value : +value;
  }
  value = baseTrim(value);
  var isBinary = reIsBinary.test(value);
  return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
}
var INFINITY$1 = 1 / 0, MAX_INTEGER = 17976931348623157e292;
function toFinite(value) {
  if (!value) {
    return value === 0 ? value : 0;
  }
  value = toNumber(value);
  if (value === INFINITY$1 || value === -INFINITY$1) {
    var sign = value < 0 ? -1 : 1;
    return sign * MAX_INTEGER;
  }
  return value === value ? value : 0;
}
function toInteger(value) {
  var result = toFinite(value), remainder = result % 1;
  return result === result ? remainder ? result - remainder : result : 0;
}
function identity(value) {
  return value;
}
var asyncTag = "[object AsyncFunction]", funcTag$1 = "[object Function]", genTag = "[object GeneratorFunction]", proxyTag = "[object Proxy]";
function isFunction(value) {
  if (!isObject(value)) {
    return false;
  }
  var tag = baseGetTag(value);
  return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag;
}
var coreJsData = root$1["__core-js_shared__"];
const coreJsData$1 = coreJsData;
var maskSrcKey = function() {
  var uid = /[^.]+$/.exec(coreJsData$1 && coreJsData$1.keys && coreJsData$1.keys.IE_PROTO || "");
  return uid ? "Symbol(src)_1." + uid : "";
}();
function isMasked(func) {
  return !!maskSrcKey && maskSrcKey in func;
}
var funcProto$1 = Function.prototype;
var funcToString$1 = funcProto$1.toString;
function toSource(func) {
  if (func != null) {
    try {
      return funcToString$1.call(func);
    } catch (e) {
    }
    try {
      return func + "";
    } catch (e) {
    }
  }
  return "";
}
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
var reIsHostCtor = /^\[object .+?Constructor\]$/;
var funcProto = Function.prototype, objectProto$9 = Object.prototype;
var funcToString = funcProto.toString;
var hasOwnProperty$7 = objectProto$9.hasOwnProperty;
var reIsNative = RegExp(
  "^" + funcToString.call(hasOwnProperty$7).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
);
function baseIsNative(value) {
  if (!isObject(value) || isMasked(value)) {
    return false;
  }
  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
  return pattern.test(toSource(value));
}
function getValue(object, key) {
  return object == null ? void 0 : object[key];
}
function getNative(object, key) {
  var value = getValue(object, key);
  return baseIsNative(value) ? value : void 0;
}
var WeakMap = getNative(root$1, "WeakMap");
const WeakMap$1 = WeakMap;
function baseFindIndex(array, predicate, fromIndex, fromRight) {
  var length = array.length, index2 = fromIndex + (fromRight ? 1 : -1);
  while (fromRight ? index2-- : ++index2 < length) {
    if (predicate(array[index2], index2, array)) {
      return index2;
    }
  }
  return -1;
}
var MAX_SAFE_INTEGER$1 = 9007199254740991;
var reIsUint = /^(?:0|[1-9]\d*)$/;
function isIndex(value, length) {
  var type = typeof value;
  length = length == null ? MAX_SAFE_INTEGER$1 : length;
  return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
}
function eq(value, other) {
  return value === other || value !== value && other !== other;
}
var MAX_SAFE_INTEGER = 9007199254740991;
function isLength(value) {
  return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
function isArrayLike(value) {
  return value != null && isLength(value.length) && !isFunction(value);
}
var objectProto$8 = Object.prototype;
function isPrototype(value) {
  var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto$8;
  return value === proto;
}
function baseTimes(n, iteratee) {
  var index2 = -1, result = Array(n);
  while (++index2 < n) {
    result[index2] = iteratee(index2);
  }
  return result;
}
var argsTag$2 = "[object Arguments]";
function baseIsArguments(value) {
  return isObjectLike(value) && baseGetTag(value) == argsTag$2;
}
var objectProto$7 = Object.prototype;
var hasOwnProperty$6 = objectProto$7.hasOwnProperty;
var propertyIsEnumerable$1 = objectProto$7.propertyIsEnumerable;
var isArguments = baseIsArguments(function() {
  return arguments;
}()) ? baseIsArguments : function(value) {
  return isObjectLike(value) && hasOwnProperty$6.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee");
};
const isArguments$1 = isArguments;
function stubFalse() {
  return false;
}
var freeExports$1 = typeof exports == "object" && exports && !exports.nodeType && exports;
var freeModule$1 = freeExports$1 && typeof module == "object" && module && !module.nodeType && module;
var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;
var Buffer = moduleExports$1 ? root$1.Buffer : void 0;
var nativeIsBuffer = Buffer ? Buffer.isBuffer : void 0;
var isBuffer = nativeIsBuffer || stubFalse;
const isBuffer$1 = isBuffer;
var argsTag$1 = "[object Arguments]", arrayTag$1 = "[object Array]", boolTag$1 = "[object Boolean]", dateTag$1 = "[object Date]", errorTag$1 = "[object Error]", funcTag = "[object Function]", mapTag$2 = "[object Map]", numberTag$1 = "[object Number]", objectTag$2 = "[object Object]", regexpTag$1 = "[object RegExp]", setTag$2 = "[object Set]", stringTag$1 = "[object String]", weakMapTag$1 = "[object WeakMap]";
var arrayBufferTag$1 = "[object ArrayBuffer]", dataViewTag$2 = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag$1] = typedArrayTags[arrayTag$1] = typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag$2] = typedArrayTags[dateTag$1] = typedArrayTags[errorTag$1] = typedArrayTags[funcTag] = typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag$2] = typedArrayTags[regexpTag$1] = typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] = typedArrayTags[weakMapTag$1] = false;
function baseIsTypedArray(value) {
  return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
function baseUnary(func) {
  return function(value) {
    return func(value);
  };
}
var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
var moduleExports = freeModule && freeModule.exports === freeExports;
var freeProcess = moduleExports && freeGlobal$1.process;
var nodeUtil = function() {
  try {
    var types = freeModule && freeModule.require && freeModule.require("util").types;
    if (types) {
      return types;
    }
    return freeProcess && freeProcess.binding && freeProcess.binding("util");
  } catch (e) {
  }
}();
const nodeUtil$1 = nodeUtil;
var nodeIsTypedArray = nodeUtil$1 && nodeUtil$1.isTypedArray;
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
const isTypedArray$1 = isTypedArray;
var objectProto$6 = Object.prototype;
var hasOwnProperty$5 = objectProto$6.hasOwnProperty;
function arrayLikeKeys(value, inherited) {
  var isArr = isArray$1(value), isArg = !isArr && isArguments$1(value), isBuff = !isArr && !isArg && isBuffer$1(value), isType = !isArr && !isArg && !isBuff && isTypedArray$1(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;
  for (var key in value) {
    if ((inherited || hasOwnProperty$5.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
    (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
    isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
    isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
    isIndex(key, length)))) {
      result.push(key);
    }
  }
  return result;
}
function overArg(func, transform2) {
  return function(arg) {
    return func(transform2(arg));
  };
}
var nativeKeys = overArg(Object.keys, Object);
const nativeKeys$1 = nativeKeys;
var objectProto$5 = Object.prototype;
var hasOwnProperty$4 = objectProto$5.hasOwnProperty;
function baseKeys(object) {
  if (!isPrototype(object)) {
    return nativeKeys$1(object);
  }
  var result = [];
  for (var key in Object(object)) {
    if (hasOwnProperty$4.call(object, key) && key != "constructor") {
      result.push(key);
    }
  }
  return result;
}
function keys(object) {
  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/;
function isKey(value, object) {
  if (isArray$1(value)) {
    return false;
  }
  var type = typeof value;
  if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
    return true;
  }
  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
}
var nativeCreate = getNative(Object, "create");
const nativeCreate$1 = nativeCreate;
function hashClear() {
  this.__data__ = nativeCreate$1 ? nativeCreate$1(null) : {};
  this.size = 0;
}
function hashDelete(key) {
  var result = this.has(key) && delete this.__data__[key];
  this.size -= result ? 1 : 0;
  return result;
}
var HASH_UNDEFINED$2 = "__lodash_hash_undefined__";
var objectProto$4 = Object.prototype;
var hasOwnProperty$3 = objectProto$4.hasOwnProperty;
function hashGet(key) {
  var data2 = this.__data__;
  if (nativeCreate$1) {
    var result = data2[key];
    return result === HASH_UNDEFINED$2 ? void 0 : result;
  }
  return hasOwnProperty$3.call(data2, key) ? data2[key] : void 0;
}
var objectProto$3 = Object.prototype;
var hasOwnProperty$2 = objectProto$3.hasOwnProperty;
function hashHas(key) {
  var data2 = this.__data__;
  return nativeCreate$1 ? data2[key] !== void 0 : hasOwnProperty$2.call(data2, key);
}
var HASH_UNDEFINED$1 = "__lodash_hash_undefined__";
function hashSet(key, value) {
  var data2 = this.__data__;
  this.size += this.has(key) ? 0 : 1;
  data2[key] = nativeCreate$1 && value === void 0 ? HASH_UNDEFINED$1 : value;
  return this;
}
function Hash(entries) {
  var index2 = -1, length = entries == null ? 0 : entries.length;
  this.clear();
  while (++index2 < length) {
    var entry = entries[index2];
    this.set(entry[0], entry[1]);
  }
}
Hash.prototype.clear = hashClear;
Hash.prototype["delete"] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;
function listCacheClear() {
  this.__data__ = [];
  this.size = 0;
}
function assocIndexOf(array, key) {
  var length = array.length;
  while (length--) {
    if (eq(array[length][0], key)) {
      return length;
    }
  }
  return -1;
}
var arrayProto = Array.prototype;
var splice = arrayProto.splice;
function listCacheDelete(key) {
  var data2 = this.__data__, index2 = assocIndexOf(data2, key);
  if (index2 < 0) {
    return false;
  }
  var lastIndex = data2.length - 1;
  if (index2 == lastIndex) {
    data2.pop();
  } else {
    splice.call(data2, index2, 1);
  }
  --this.size;
  return true;
}
function listCacheGet(key) {
  var data2 = this.__data__, index2 = assocIndexOf(data2, key);
  return index2 < 0 ? void 0 : data2[index2][1];
}
function listCacheHas(key) {
  return assocIndexOf(this.__data__, key) > -1;
}
function listCacheSet(key, value) {
  var data2 = this.__data__, index2 = assocIndexOf(data2, key);
  if (index2 < 0) {
    ++this.size;
    data2.push([key, value]);
  } else {
    data2[index2][1] = value;
  }
  return this;
}
function ListCache(entries) {
  var index2 = -1, length = entries == null ? 0 : entries.length;
  this.clear();
  while (++index2 < length) {
    var entry = entries[index2];
    this.set(entry[0], entry[1]);
  }
}
ListCache.prototype.clear = listCacheClear;
ListCache.prototype["delete"] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;
var Map = getNative(root$1, "Map");
const Map$1 = Map;
function mapCacheClear() {
  this.size = 0;
  this.__data__ = {
    "hash": new Hash(),
    "map": new (Map$1 || ListCache)(),
    "string": new Hash()
  };
}
function isKeyable(value) {
  var type = typeof value;
  return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
}
function getMapData(map, key) {
  var data2 = map.__data__;
  return isKeyable(key) ? data2[typeof key == "string" ? "string" : "hash"] : data2.map;
}
function mapCacheDelete(key) {
  var result = getMapData(this, key)["delete"](key);
  this.size -= result ? 1 : 0;
  return result;
}
function mapCacheGet(key) {
  return getMapData(this, key).get(key);
}
function mapCacheHas(key) {
  return getMapData(this, key).has(key);
}
function mapCacheSet(key, value) {
  var data2 = getMapData(this, key), size = data2.size;
  data2.set(key, value);
  this.size += data2.size == size ? 0 : 1;
  return this;
}
function MapCache(entries) {
  var index2 = -1, length = entries == null ? 0 : entries.length;
  this.clear();
  while (++index2 < length) {
    var entry = entries[index2];
    this.set(entry[0], entry[1]);
  }
}
MapCache.prototype.clear = mapCacheClear;
MapCache.prototype["delete"] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;
var FUNC_ERROR_TEXT$2 = "Expected a function";
function memoize(func, resolver) {
  if (typeof func != "function" || resolver != null && typeof resolver != "function") {
    throw new TypeError(FUNC_ERROR_TEXT$2);
  }
  var memoized = function() {
    var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
    if (cache.has(key)) {
      return cache.get(key);
    }
    var result = func.apply(this, args);
    memoized.cache = cache.set(key, result) || cache;
    return result;
  };
  memoized.cache = new (memoize.Cache || MapCache)();
  return memoized;
}
memoize.Cache = MapCache;
var MAX_MEMOIZE_SIZE = 500;
function memoizeCapped(func) {
  var result = memoize(func, function(key) {
    if (cache.size === MAX_MEMOIZE_SIZE) {
      cache.clear();
    }
    return key;
  });
  var cache = result.cache;
  return result;
}
var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
var reEscapeChar = /\\(\\)?/g;
var stringToPath = memoizeCapped(function(string) {
  var result = [];
  if (string.charCodeAt(0) === 46) {
    result.push("");
  }
  string.replace(rePropName, function(match, number, quote, subString) {
    result.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
  });
  return result;
});
const stringToPath$1 = stringToPath;
function toString(value) {
  return value == null ? "" : baseToString(value);
}
function castPath(value, object) {
  if (isArray$1(value)) {
    return value;
  }
  return isKey(value, object) ? [value] : stringToPath$1(toString(value));
}
var INFINITY = 1 / 0;
function toKey(value) {
  if (typeof value == "string" || isSymbol(value)) {
    return value;
  }
  var result = value + "";
  return result == "0" && 1 / value == -INFINITY ? "-0" : result;
}
function baseGet(object, path) {
  path = castPath(path, object);
  var index2 = 0, length = path.length;
  while (object != null && index2 < length) {
    object = object[toKey(path[index2++])];
  }
  return index2 && index2 == length ? object : void 0;
}
function get(object, path, defaultValue) {
  var result = object == null ? void 0 : baseGet(object, path);
  return result === void 0 ? defaultValue : result;
}
function arrayPush(array, values) {
  var index2 = -1, length = values.length, offset2 = array.length;
  while (++index2 < length) {
    array[offset2 + index2] = values[index2];
  }
  return array;
}
function stackClear() {
  this.__data__ = new ListCache();
  this.size = 0;
}
function stackDelete(key) {
  var data2 = this.__data__, result = data2["delete"](key);
  this.size = data2.size;
  return result;
}
function stackGet(key) {
  return this.__data__.get(key);
}
function stackHas(key) {
  return this.__data__.has(key);
}
var LARGE_ARRAY_SIZE = 200;
function stackSet(key, value) {
  var data2 = this.__data__;
  if (data2 instanceof ListCache) {
    var pairs = data2.__data__;
    if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {
      pairs.push([key, value]);
      this.size = ++data2.size;
      return this;
    }
    data2 = this.__data__ = new MapCache(pairs);
  }
  data2.set(key, value);
  this.size = data2.size;
  return this;
}
function Stack(entries) {
  var data2 = this.__data__ = new ListCache(entries);
  this.size = data2.size;
}
Stack.prototype.clear = stackClear;
Stack.prototype["delete"] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;
function arrayFilter(array, predicate) {
  var index2 = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
  while (++index2 < length) {
    var value = array[index2];
    if (predicate(value, index2, array)) {
      result[resIndex++] = value;
    }
  }
  return result;
}
function stubArray() {
  return [];
}
var objectProto$2 = Object.prototype;
var propertyIsEnumerable = objectProto$2.propertyIsEnumerable;
var nativeGetSymbols = Object.getOwnPropertySymbols;
var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
  if (object == null) {
    return [];
  }
  object = Object(object);
  return arrayFilter(nativeGetSymbols(object), function(symbol) {
    return propertyIsEnumerable.call(object, symbol);
  });
};
const getSymbols$1 = getSymbols;
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
  var result = keysFunc(object);
  return isArray$1(object) ? result : arrayPush(result, symbolsFunc(object));
}
function getAllKeys(object) {
  return baseGetAllKeys(object, keys, getSymbols$1);
}
var DataView = getNative(root$1, "DataView");
const DataView$1 = DataView;
var Promise$1 = getNative(root$1, "Promise");
const Promise$2 = Promise$1;
var Set = getNative(root$1, "Set");
const Set$1 = Set;
var mapTag$1 = "[object Map]", objectTag$1 = "[object Object]", promiseTag = "[object Promise]", setTag$1 = "[object Set]", weakMapTag = "[object WeakMap]";
var dataViewTag$1 = "[object DataView]";
var dataViewCtorString = toSource(DataView$1), mapCtorString = toSource(Map$1), promiseCtorString = toSource(Promise$2), setCtorString = toSource(Set$1), weakMapCtorString = toSource(WeakMap$1);
var getTag = baseGetTag;
if (DataView$1 && getTag(new DataView$1(new ArrayBuffer(1))) != dataViewTag$1 || Map$1 && getTag(new Map$1()) != mapTag$1 || Promise$2 && getTag(Promise$2.resolve()) != promiseTag || Set$1 && getTag(new Set$1()) != setTag$1 || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag) {
  getTag = function(value) {
    var result = baseGetTag(value), Ctor = result == objectTag$1 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
    if (ctorString) {
      switch (ctorString) {
        case dataViewCtorString:
          return dataViewTag$1;
        case mapCtorString:
          return mapTag$1;
        case promiseCtorString:
          return promiseTag;
        case setCtorString:
          return setTag$1;
        case weakMapCtorString:
          return weakMapTag;
      }
    }
    return result;
  };
}
const getTag$1 = getTag;
var Uint8Array = root$1.Uint8Array;
const Uint8Array$1 = Uint8Array;
var HASH_UNDEFINED = "__lodash_hash_undefined__";
function setCacheAdd(value) {
  this.__data__.set(value, HASH_UNDEFINED);
  return this;
}
function setCacheHas(value) {
  return this.__data__.has(value);
}
function SetCache(values) {
  var index2 = -1, length = values == null ? 0 : values.length;
  this.__data__ = new MapCache();
  while (++index2 < length) {
    this.add(values[index2]);
  }
}
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;
function arraySome(array, predicate) {
  var index2 = -1, length = array == null ? 0 : array.length;
  while (++index2 < length) {
    if (predicate(array[index2], index2, array)) {
      return true;
    }
  }
  return false;
}
function cacheHas(cache, key) {
  return cache.has(key);
}
var COMPARE_PARTIAL_FLAG$5 = 1, COMPARE_UNORDERED_FLAG$3 = 2;
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
  var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5, arrLength = array.length, othLength = other.length;
  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
    return false;
  }
  var arrStacked = stack.get(array);
  var othStacked = stack.get(other);
  if (arrStacked && othStacked) {
    return arrStacked == other && othStacked == array;
  }
  var index2 = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$3 ? new SetCache() : void 0;
  stack.set(array, other);
  stack.set(other, array);
  while (++index2 < arrLength) {
    var arrValue = array[index2], othValue = other[index2];
    if (customizer) {
      var compared = isPartial ? customizer(othValue, arrValue, index2, other, array, stack) : customizer(arrValue, othValue, index2, array, other, stack);
    }
    if (compared !== void 0) {
      if (compared) {
        continue;
      }
      result = false;
      break;
    }
    if (seen) {
      if (!arraySome(other, function(othValue2, othIndex) {
        if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
          return seen.push(othIndex);
        }
      })) {
        result = false;
        break;
      }
    } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
      result = false;
      break;
    }
  }
  stack["delete"](array);
  stack["delete"](other);
  return result;
}
function mapToArray(map) {
  var index2 = -1, result = Array(map.size);
  map.forEach(function(value, key) {
    result[++index2] = [key, value];
  });
  return result;
}
function setToArray(set) {
  var index2 = -1, result = Array(set.size);
  set.forEach(function(value) {
    result[++index2] = value;
  });
  return result;
}
var COMPARE_PARTIAL_FLAG$4 = 1, COMPARE_UNORDERED_FLAG$2 = 2;
var boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", mapTag = "[object Map]", numberTag = "[object Number]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]";
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]";
var symbolProto = Symbol$2 ? Symbol$2.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
  switch (tag) {
    case dataViewTag:
      if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
        return false;
      }
      object = object.buffer;
      other = other.buffer;
    case arrayBufferTag:
      if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array$1(object), new Uint8Array$1(other))) {
        return false;
      }
      return true;
    case boolTag:
    case dateTag:
    case numberTag:
      return eq(+object, +other);
    case errorTag:
      return object.name == other.name && object.message == other.message;
    case regexpTag:
    case stringTag:
      return object == other + "";
    case mapTag:
      var convert = mapToArray;
    case setTag:
      var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4;
      convert || (convert = setToArray);
      if (object.size != other.size && !isPartial) {
        return false;
      }
      var stacked = stack.get(object);
      if (stacked) {
        return stacked == other;
      }
      bitmask |= COMPARE_UNORDERED_FLAG$2;
      stack.set(object, other);
      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
      stack["delete"](object);
      return result;
    case symbolTag:
      if (symbolValueOf) {
        return symbolValueOf.call(object) == symbolValueOf.call(other);
      }
  }
  return false;
}
var COMPARE_PARTIAL_FLAG$3 = 1;
var objectProto$1 = Object.prototype;
var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
  var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
  if (objLength != othLength && !isPartial) {
    return false;
  }
  var index2 = objLength;
  while (index2--) {
    var key = objProps[index2];
    if (!(isPartial ? key in other : hasOwnProperty$1.call(other, key))) {
      return false;
    }
  }
  var objStacked = stack.get(object);
  var othStacked = stack.get(other);
  if (objStacked && othStacked) {
    return objStacked == other && othStacked == object;
  }
  var result = true;
  stack.set(object, other);
  stack.set(other, object);
  var skipCtor = isPartial;
  while (++index2 < objLength) {
    key = objProps[index2];
    var objValue = object[key], othValue = other[key];
    if (customizer) {
      var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
    }
    if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
      result = false;
      break;
    }
    skipCtor || (skipCtor = key == "constructor");
  }
  if (result && !skipCtor) {
    var objCtor = object.constructor, othCtor = other.constructor;
    if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
      result = false;
    }
  }
  stack["delete"](object);
  stack["delete"](other);
  return result;
}
var COMPARE_PARTIAL_FLAG$2 = 1;
var argsTag = "[object Arguments]", arrayTag = "[object Array]", objectTag = "[object Object]";
var objectProto = Object.prototype;
var hasOwnProperty = objectProto.hasOwnProperty;
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
  var objIsArr = isArray$1(object), othIsArr = isArray$1(other), objTag = objIsArr ? arrayTag : getTag$1(object), othTag = othIsArr ? arrayTag : getTag$1(other);
  objTag = objTag == argsTag ? objectTag : objTag;
  othTag = othTag == argsTag ? objectTag : othTag;
  var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
  if (isSameTag && isBuffer$1(object)) {
    if (!isBuffer$1(other)) {
      return false;
    }
    objIsArr = true;
    objIsObj = false;
  }
  if (isSameTag && !objIsObj) {
    stack || (stack = new Stack());
    return objIsArr || isTypedArray$1(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
  }
  if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {
    var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
    if (objIsWrapped || othIsWrapped) {
      var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
      stack || (stack = new Stack());
      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
    }
  }
  if (!isSameTag) {
    return false;
  }
  stack || (stack = new Stack());
  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}
function baseIsEqual(value, other, bitmask, customizer, stack) {
  if (value === other) {
    return true;
  }
  if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
    return value !== value && other !== other;
  }
  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}
var COMPARE_PARTIAL_FLAG$1 = 1, COMPARE_UNORDERED_FLAG$1 = 2;
function baseIsMatch(object, source, matchData, customizer) {
  var index2 = matchData.length, length = index2, noCustomizer = !customizer;
  if (object == null) {
    return !length;
  }
  object = Object(object);
  while (index2--) {
    var data2 = matchData[index2];
    if (noCustomizer && data2[2] ? data2[1] !== object[data2[0]] : !(data2[0] in object)) {
      return false;
    }
  }
  while (++index2 < length) {
    data2 = matchData[index2];
    var key = data2[0], objValue = object[key], srcValue = data2[1];
    if (noCustomizer && data2[2]) {
      if (objValue === void 0 && !(key in object)) {
        return false;
      }
    } else {
      var stack = new Stack();
      if (customizer) {
        var result = customizer(objValue, srcValue, key, object, source, stack);
      }
      if (!(result === void 0 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) : result)) {
        return false;
      }
    }
  }
  return true;
}
function isStrictComparable(value) {
  return value === value && !isObject(value);
}
function getMatchData(object) {
  var result = keys(object), length = result.length;
  while (length--) {
    var key = result[length], value = object[key];
    result[length] = [key, value, isStrictComparable(value)];
  }
  return result;
}
function matchesStrictComparable(key, srcValue) {
  return function(object) {
    if (object == null) {
      return false;
    }
    return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));
  };
}
function baseMatches(source) {
  var matchData = getMatchData(source);
  if (matchData.length == 1 && matchData[0][2]) {
    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
  }
  return function(object) {
    return object === source || baseIsMatch(object, source, matchData);
  };
}
function baseHasIn(object, key) {
  return object != null && key in Object(object);
}
function hasPath(object, path, hasFunc) {
  path = castPath(path, object);
  var index2 = -1, length = path.length, result = false;
  while (++index2 < length) {
    var key = toKey(path[index2]);
    if (!(result = object != null && hasFunc(object, key))) {
      break;
    }
    object = object[key];
  }
  if (result || ++index2 != length) {
    return result;
  }
  length = object == null ? 0 : object.length;
  return !!length && isLength(length) && isIndex(key, length) && (isArray$1(object) || isArguments$1(object));
}
function hasIn(object, path) {
  return object != null && hasPath(object, path, baseHasIn);
}
var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
function baseMatchesProperty(path, srcValue) {
  if (isKey(path) && isStrictComparable(srcValue)) {
    return matchesStrictComparable(toKey(path), srcValue);
  }
  return function(object) {
    var objValue = get(object, path);
    return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
  };
}
function baseProperty(key) {
  return function(object) {
    return object == null ? void 0 : object[key];
  };
}
function basePropertyDeep(path) {
  return function(object) {
    return baseGet(object, path);
  };
}
function property(path) {
  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
}
function baseIteratee(value) {
  if (typeof value == "function") {
    return value;
  }
  if (value == null) {
    return identity;
  }
  if (typeof value == "object") {
    return isArray$1(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
  }
  return property(value);
}
var now = function() {
  return root$1.Date.now();
};
const now$1 = now;
var FUNC_ERROR_TEXT$1 = "Expected a function";
var nativeMax$1 = Math.max, nativeMin$1 = Math.min;
function debounce(func, wait, options) {
  var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
  if (typeof func != "function") {
    throw new TypeError(FUNC_ERROR_TEXT$1);
  }
  wait = toNumber(wait) || 0;
  if (isObject(options)) {
    leading = !!options.leading;
    maxing = "maxWait" in options;
    maxWait = maxing ? nativeMax$1(toNumber(options.maxWait) || 0, wait) : maxWait;
    trailing = "trailing" in options ? !!options.trailing : trailing;
  }
  function invokeFunc(time) {
    var args = lastArgs, thisArg = lastThis;
    lastArgs = lastThis = void 0;
    lastInvokeTime = time;
    result = func.apply(thisArg, args);
    return result;
  }
  function leadingEdge(time) {
    lastInvokeTime = time;
    timerId = setTimeout(timerExpired, wait);
    return leading ? invokeFunc(time) : result;
  }
  function remainingWait(time) {
    var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
    return maxing ? nativeMin$1(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
  }
  function shouldInvoke(time) {
    var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
    return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
  }
  function timerExpired() {
    var time = now$1();
    if (shouldInvoke(time)) {
      return trailingEdge(time);
    }
    timerId = setTimeout(timerExpired, remainingWait(time));
  }
  function trailingEdge(time) {
    timerId = void 0;
    if (trailing && lastArgs) {
      return invokeFunc(time);
    }
    lastArgs = lastThis = void 0;
    return result;
  }
  function cancel() {
    if (timerId !== void 0) {
      clearTimeout(timerId);
    }
    lastInvokeTime = 0;
    lastArgs = lastCallTime = lastThis = timerId = void 0;
  }
  function flush() {
    return timerId === void 0 ? result : trailingEdge(now$1());
  }
  function debounced() {
    var time = now$1(), isInvoking = shouldInvoke(time);
    lastArgs = arguments;
    lastThis = this;
    lastCallTime = time;
    if (isInvoking) {
      if (timerId === void 0) {
        return leadingEdge(lastCallTime);
      }
      if (maxing) {
        clearTimeout(timerId);
        timerId = setTimeout(timerExpired, wait);
        return invokeFunc(lastCallTime);
      }
    }
    if (timerId === void 0) {
      timerId = setTimeout(timerExpired, wait);
    }
    return result;
  }
  debounced.cancel = cancel;
  debounced.flush = flush;
  return debounced;
}
var nativeMax = Math.max, nativeMin = Math.min;
function findLastIndex(array, predicate, fromIndex) {
  var length = array == null ? 0 : array.length;
  if (!length) {
    return -1;
  }
  var index2 = length - 1;
  if (fromIndex !== void 0) {
    index2 = toInteger(fromIndex);
    index2 = fromIndex < 0 ? nativeMax(length + index2, 0) : nativeMin(index2, length - 1);
  }
  return baseFindIndex(array, baseIteratee(predicate), index2, true);
}
var FUNC_ERROR_TEXT = "Expected a function";
function throttle(func, wait, options) {
  var leading = true, trailing = true;
  if (typeof func != "function") {
    throw new TypeError(FUNC_ERROR_TEXT);
  }
  if (isObject(options)) {
    leading = "leading" in options ? !!options.leading : leading;
    trailing = "trailing" in options ? !!options.trailing : trailing;
  }
  return debounce(func, wait, {
    "leading": leading,
    "maxWait": wait,
    "trailing": trailing
  });
}
function isAndroid() {
  return /(Android)/i.test(navigator.userAgent);
}
function isApple() {
  return /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent);
}
function isSony() {
  return /sonyapp/i.test(navigator.userAgent);
}
function isSonyAppwk() {
  return /sonyapp_wkwebview/i.test(navigator.userAgent);
}
function isSonyApp() {
  return isSony() || isSonyAppwk();
}
function isMiniprogram() {
  return window.__wxjs_environment === "miniprogram";
}
function miniprogramNavigateTo(url) {
  if (!isMiniprogram())
    return;
  window.wx.miniProgram.navigateTo({
    url
  });
}
function isMobile() {
  return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
    navigator.userAgent
  );
}
function sendTagManually(tagType, data2) {
  const _dtm_tag_obj = {
    tagType,
    ...data2
  };
  window._dacq && typeof window._dacq.tag_obj_fun == "function" && window._dacq.tag_obj_fun(_dtm_tag_obj);
}
function connectWebViewJavascriptBridge(callback) {
  if (window.WebViewJavascriptBridge) {
    callback(window.WebViewJavascriptBridge);
  } else {
    document.addEventListener(
      "WebViewJavascriptBridgeReady",
      function() {
        callback(window.WebViewJavascriptBridge);
      },
      false
    );
  }
}
function doAppAction({ url, title, linktype }) {
  var ed = {
    link: url,
    title,
    linktype
  };
  try {
    if (isApple()) {
      if (isSonyAppwk()) {
        window.webkit.messageHandlers.showName.postMessage(ed);
      } else if (isSony()) {
        connectWebViewJavascriptBridge((bridge) => {
          bridge.send(JSON.stringify(ed), function(response) {
            console.log(response);
          });
        });
      }
    }
    if (isAndroid() && ed.linktype) {
      window.SysClientJs.linktype(ed.linktype, JSON.stringify(ed));
    }
  } catch (err) {
    console.log("do app linktype", err);
  }
}
const __$_require_bc4ca446__ = "" + new URL("jitianwusi.jpg", import.meta.url).href;
const promoter2 = "" + new URL("yingbaoli.jpg", import.meta.url).href;
const promoter3 = "" + new URL("zhuzhong.jpg", import.meta.url).href;
const promoter4 = "" + new URL("buchuan.jpg", import.meta.url).href;
const promoter5 = "" + new URL("liuyinghuan.jpg", import.meta.url).href;
const promoter6 = "" + new URL("zhengqi.png", import.meta.url).href;
const promoter7 = "" + new URL("chuankou.jpg", import.meta.url).href;
const promoter8 = "" + new URL("yiteng.jpg", import.meta.url).href;
const empty = "" + new URL("null.jpg", import.meta.url).href;
const topic1 = "" + new URL("bigscreen.jpg", import.meta.url).href;
const topic2 = "" + new URL("topic-erji.jpg", import.meta.url).href;
const topic3 = "" + new URL("one sony.jpg", import.meta.url).href;
const price2 = "" + new URL("yinjiang-erji.jpg", import.meta.url).href;
const price3 = "" + new URL("shoubing.jpg", import.meta.url).href;
const __$_require_382dfdfc__ = "" + new URL("pingwei-erji.jpg", import.meta.url).href;
const __$_require_337b4c9e__ = "" + new URL("logo-border.jpg", import.meta.url).href;
const __$_require_411b12ae__ = "" + new URL("jiaoyu.jpg", import.meta.url).href;
const __$_require_a44abdb2__ = "" + new URL("music.jpg", import.meta.url).href;
const __$_require_6e67d7b4__ = "" + new URL("erji.jpg", import.meta.url).href;
const __$_require_08c9c4f2__ = "" + new URL("KV.jpg", import.meta.url).href;
const __$_require_45a1f8b8__ = "";
const __$_require_45ce1a91__ = "";
const __$_require_718bc11e__ = "";
const __$_require_0e59efc4__ = "";
const __$_require_d5d0a21c__ = "";
const __$_require_3def530c__ = "" + new URL("shexiangji.jpg", import.meta.url).href;
const __$_require_0a91f887__ = "" + new URL("logo.jpg", import.meta.url).href;
const __$_require_23200d24__ = "" + new URL("orange.jpg", import.meta.url).href;
const __$_require_1c9844bc__ = "" + new URL("pingshen.jpg", import.meta.url).href;
const __$_require_7d9f27f4__ = "" + new URL("contact-music.jpg", import.meta.url).href;
const App_vue_vue_type_style_index_0_scoped_277fcd07_lang = "";
const App_vue_vue_type_style_index_1_lang = "";
function normalizeComponent(scriptExports, render2, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
  var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports;
  if (render2) {
    options.render = render2;
    options.staticRenderFns = staticRenderFns;
    options._compiled = true;
  }
  if (functionalTemplate) {
    options.functional = true;
  }
  if (scopeId) {
    options._scopeId = "data-v-" + scopeId;
  }
  var hook;
  if (moduleIdentifier) {
    hook = function(context) {
      context = context || // cached call
      this.$vnode && this.$vnode.ssrContext || // stateful
      this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext;
      if (!context && typeof __VUE_SSR_CONTEXT__ !== "undefined") {
        context = __VUE_SSR_CONTEXT__;
      }
      if (injectStyles) {
        injectStyles.call(this, context);
      }
      if (context && context._registeredComponents) {
        context._registeredComponents.add(moduleIdentifier);
      }
    };
    options._ssrRegister = hook;
  } else if (injectStyles) {
    hook = shadowMode ? function() {
      injectStyles.call(
        this,
        (options.functional ? this.parent : this).$root.$options.shadowRoot
      );
    } : injectStyles;
  }
  if (hook) {
    if (options.functional) {
      options._injectStyles = hook;
      var originalRender = options.render;
      options.render = function renderWithStyleInjection(h, context) {
        hook.call(context);
        return originalRender(h, context);
      };
    } else {
      var existing = options.beforeCreate;
      options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
    }
  }
  return {
    exports: scriptExports,
    options
  };
}
const _sfc_main = {
  data() {
    return {
      activeAnchorId: 1,
      navList: [
        { title: "首页", anchorId: 1 },
        { title: "报名", anchorId: 2 },
        { title: "活动介绍", anchorId: 3 },
        { title: "活动安排", anchorId: 4 },
        { title: "活动话题", anchorId: 5 },
        { title: "评委介绍", anchorId: 6 }
      ],
      downloadList: [
        { name: "活动声明细则点击下载", id: "3", url: "" },
        { name: "报名表和作品提交格式下载", id: "4", url: "" }
      ],
      promoters: [
        {
          name: "吉田 武司",
          id: 1,
          promoter: "活动发起人",
          department: "索尼(中国)有限公司",
          position: "总裁",
          url: __$_require_bc4ca446__
        },
        {
          name: "英保 黎",
          id: 2,
          promoter: "活动发起人",
          department: "索尼(中国)有限公司 事业战略室",
          position: "副总裁",
          url: promoter2
        },
        {
          name: "吉田 武司",
          id: 3,
          promoter: "学术发起人",
          department: "索尼(中国)有限公司",
          position: "总裁",
          url: empty
        },
        {
          name: "英保 黎",
          id: 4,
          promoter: "学术发起人",
          department: "索尼(中国)有限公司 事业战略室",
          position: "副总裁",
          url: empty
        }
      ],
      arranges: [
        {
          title: "初赛报名",
          id: 1,
          subtitle: "开放",
          date: "2023.11"
        },
        {
          title: "初赛作品",
          id: 2,
          subtitle: "提交开放",
          date: "2023.12-2024.03"
        },
        {
          title: "线上初赛",
          id: 3,
          subtitle: "作品评选",
          date: "2024.03"
        },
        {
          title: "决赛入围",
          id: 4,
          subtitle: "公布和邀请",
          date: "2024.04"
        },
        {
          title: "线下决赛",
          id: 5,
          subtitle: "和颁奖",
          date: "2024.05"
        },
        {
          title: "获奖",
          id: 6,
          subtitle: "公示",
          date: "2024.06-2024.08"
        }
      ],
      subjects: [
        {
          title: "潮流科技与屏",
          id: 1,
          subtitle: "Big Screen",
          thirdtitle: "for Young Gen’s Lifestyle",
          img: topic1,
          subject: [
            {
              title: "用于大屏幕的智能功能与潮流技术",
              desc: "如何结合ChatGPT，元界，新传感器技术来提高生活体验。"
            },
            {
              title: "针对不同用户社群的大屏定制功能",
              desc: "如何通过简单、智能、有趣的功能<br/>满足不同群体的需求。<br/>如电影爱好者、游戏爱好者等。"
            }
          ]
        },
        {
          title: "耳机",
          id: 2,
          subtitle: "Headphone& Next Generation、",
          thirdtitle: "of User Exprience",
          img: topic2,
          subject: [
            {
              title: "智能耳机陀螺仪应用开发",
              desc: "如何使耳机陀螺仪运用到新的程序或场景<br/>耳机陀螺仪基本的数据到进阶数据转化算法开发"
            },
            {
              title: "智能耳机全新交互创想",
              desc: "新的用户交互<br/>新的耳机形态"
            }
          ]
        },
        {
          title: "索尼 & 平台",
          id: 3,
          subtitle: "Sony’s Online Services",
          thirdtitle: "for Next Generations",
          img: topic3,
          subject: [
            {
              title: "对于内容创建者",
              desc: "相机后期创作解决方案<br/>MOCOPI 动作捕捉系统创作<br/>空间现实显示屏 SDR 创作"
            },
            {
              title: "对于消费者和粉丝",
              desc: "索尼生态系统与粉丝社群创想<br/>游戏，音乐，消费类电子，动画等"
            }
          ]
        }
      ],
      works: [
        {
          title: "专业",
          desc: "工业设计<br/>心理学<br/>社会或人类行为研究<br/>市场研究<br/>商业战略研究<br/>机械产品设计<br/>计算机科学或软件设计<br/>跨领域研究团队<br/>传感器研究团队<br/>媒体交互研究团队如音乐，视频<br/>..."
        },
        {
          title: "方向",
          desc: "市场趋势和动向中的痛点或潜在可能性<br/>年轻人喜好和风格<br/>智慧/智能/便捷生活<br/>多媒体创新<br/>互联互通<br/>未来应用场景思考<br/>生态服务创新<br/>新技术<br/>技术新应用<br/>新的解决方案<br/>..."
        },
        {
          title: "类型",
          desc: "硬件工业设计作品<br/>交互体验设计作品<br/>软件设计作品<br/>动画影像畅想作品<br/>硬件实体作品，如机器人，<br/>材料，装置，可穿戴等<br/>应用场景设计作品<br/>商业/产品/战略计划作品<br/>...<br/><br/><br/>"
        }
      ],
      prices: [
        {
          title: "金奖 – Dream Maker",
          data: [
            "奖金 20000 以及奖杯或奖状",
            "有机会获得PoC产品原型投资和未来长期孵化合作"
          ]
        },
        {
          title: "银奖 – Dream Catcher",
          data: [
            "奖金 10000 以及奖杯或奖状",
            "有机会获得PoC产品原型投资和未来长期孵化合作"
          ]
        },
        {
          title: "铜奖 – Dream Pilot",
          data: [
            "奖金 5000 以及奖杯或奖状",
            "有机会获得PoC产品原型投资和未来长期孵化合作"
          ]
        }
      ],
      otherPrice: [
        {
          title: "未来发展",
          data: [
            "索尼中国CEO总裁额外签名认证证书",
            "索尼高层面对面畅聊",
            "索尼高层推荐信",
            "专家、大咖专业化指导及其他创新赋能资源"
          ]
        },
        {
          title: "其他",
          data: [
            "索尼中国一日游，体验内部黑科技",
            "索尼EXPO展览邀请函",
            "索尼新品体验官资格"
          ]
        }
      ],
      otherPrice1: [
        {
          title: "曝光资源",
          data: ["索尼专访", "公众曝光"]
        }
      ],
      otherList: [
        {
          num: 3,
          title: "潜力奖",
          src: price2,
          list: [
            {
              title: "奖金 2500 以及奖状",
              data: []
            },
            {
              title: "未来发展",
              data: ["专家、技术大咖专业化指导", "及其他创新赋能资源"]
            }
          ],
          list1: [
            {
              title: "其他",
              data: ["索尼EXPO展览邀请函"]
            }
          ]
        },
        {
          num: 15,
          src: price3,
          title: "入围奖",
          list: [
            {
              title: "奖品 奖状",
              data: []
            },
            {
              title: "未来发展",
              data: ["专家、技术大咖专业化指导", "及其他创新赋能资源"]
            }
          ],
          list1: []
        }
      ],
      judges: [
        {
          name: "英保 黎",
          id: 1,
          promoter: promoter2,
          department: "索尼(中国)事业战略室",
          position: "副总裁"
        },
        {
          name: "竹中 幹雄",
          id: 2,
          promoter: promoter3,
          department: "索尼(中国)研究院",
          position: "院长"
        },
        {
          name: "布川 克彦",
          id: 3,
          promoter: promoter4,
          department: "索尼(中国)软件开发中心",
          position: "副总裁"
        },
        {
          name: "刘 迎欢",
          id: 4,
          promoter: promoter5,
          department: "索尼(中国)事业战略室",
          position: "总经理"
        },
        {
          name: "郑 奇",
          id: 5,
          promoter: promoter6,
          department: "索尼(中国)设计师中心",
          position: "总经理"
        },
        {
          name: "川口 元气",
          id: 6,
          promoter: promoter7,
          department: "索尼(中国)个人娱乐企划",
          position: "总监"
        },
        {
          name: "伊藤 慎",
          id: 7,
          promoter: promoter8,
          department: "索尼(中国)家庭娱乐企划",
          position: "总监"
        },
        {
          name: "",
          id: 8,
          promoter: promoter8,
          department: "",
          position: ""
        }
      ]
    };
  },
  created() {
    if (!isMobile()) {
      window.location.pathname = window.location.pathname.replace(
        "index_m.html",
        "index.html"
      );
    }
  },
  mounted() {
    new Swiper(".swiper-container", {
      // 如果需要前进后退按钮
      slidesPerView: "auto",
      centeredSlides: true,
      spaceBetween: 30,
      navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
      }
    });
    new Swiper(".respect-swiper", {
      // 如果需要前进后退按钮
      slidesPerView: "auto",
      centeredSlides: true,
      spaceBetween: 30,
      navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
      }
    });
    const app = document.querySelector(".app-layout");
    setTimeout(() => {
      this.onScroll();
    }, 300);
    app.addEventListener(
      "scroll",
      throttle(this.onScroll, 500, { leading: true })
    );
  },
  methods: {
    onGotoAnchor(id) {
      const app = document.querySelector(".app-layout");
      const containerHeight = document.querySelector(".anchor-container").offsetHeight;
      const target = document.querySelector(`[data-anchor="${id}"]`);
      const top = target.offsetTop - containerHeight + 10;
      app.scrollTo({
        top,
        behavior: "smooth"
      });
    },
    onScroll() {
      const scrollTop = document.querySelector(".app-layout").scrollTop;
      const containerHeight = document.querySelector(".anchor-container").offsetHeight;
      const anchorElTop = Array.from(
        document.querySelectorAll("[data-anchor]")
      ).map((i) => i.offsetTop);
      const currentArea = scrollTop + containerHeight + 240;
      const activeIndex = findLastIndex(anchorElTop, (t) => currentArea > t);
      if (activeIndex === -1) {
        this.activeAnchorId = 0;
      } else {
        this.activeAnchorId = activeIndex + 1;
      }
    },
    goEdu() {
      const url = "https://www.sonystyle.com.cn/SSOminisite/promotion/edupurchase_20230706_stu/mobile_index.html?ssid=jtdx_1109";
      sendTagManually("Img_click", {
        img_name: "教育优惠"
      });
      if (isSonyApp()) {
        doAppAction({
          url,
          title: "教育优惠",
          linktype: "1"
        });
      } else if (isMiniprogram()) {
        miniprogramNavigateTo(url);
      } else {
        window.location.href = url;
      }
    }
  }
};
var _sfc_render = function render() {
  var _vm = this, _c = _vm._self._c;
  return _c("div", { staticClass: "app-layout tw-max-w-3xl tw-mx-auto", attrs: { "id": "shjd-page" } }, [_vm._m(0), _c("div", { staticClass: "anchor-container tw-sticky tw-top-0 tw-z-10" }, [_c("div", { staticClass: "tw-flex tw-flex-wrap tw-justify-center tw-items-center tw-mx-auto tw-py-2" }, _vm._l(_vm.navList, function(item) {
    return _c("div", { key: item.anchorId, staticClass: "tw-w-[28%] tw-text-center tw-text-sm md:tw-text-lg tw-text-zinc-700 tw-py-1", class: {
      active: item.anchorId === _vm.activeAnchorId
    }, on: { "click": function($event) {
      return _vm.onGotoAnchor(item.anchorId);
    } } }, [_c("a", { staticClass: "tw-scale-90", attrs: { "href": `#anchor-${item.anchorId}` }, on: { "click": function($event) {
      $event.preventDefault();
    } } }, [_vm._v(_vm._s(item.title))])]);
  }), 0)]), _c("div", { staticClass: "tw-relative tw-pt-12 tw-bg-white", attrs: { "data-anchor": "2", "id": "anchor-2" } }, [_c("img", { staticClass: "tw-absolute tw-w-[18%] tw-left-2 tw-top-4 movedown", attrs: { "src": __$_require_382dfdfc__ } }), _c("img", { staticClass: "tw-absolute tw-right-0 tw-top-0 tw-w-[72%]", attrs: { "src": __$_require_337b4c9e__, "alt": "logo-border" } }), _c("div", { staticClass: "baoming-btn tw-relative tw-w-[44%] md:tw-w-[220px] tw-mx-auto tw-py-2 md:tw-py-4 tw-text-zinc-800 tw-rounded-xl tw-text-[28px] bold tw-text-center" }, [_vm._v(" 点击报名 ")]), _c("ul", { staticClass: "tw-relative tw-w-[94%] tw-mx-auto tw-mt-10 tw-flex tw-flex-wrap" }, _vm._l(_vm.downloadList, function(item) {
    return _c("li", { key: item.id, staticClass: "tw-text-zinc-700 tw-w-1/2 tw-text-[14px] md:tw-text-lg md:tw-text-center tw-my-1 md:tw-my-4 tw-underline tw-underline-offset-4", class: item.id === "4" ? "tw-tracking-normal" : "tw-tracking-widest" }, [_vm._v(" " + _vm._s(item.name) + " ")]);
  }), 0)]), _c("div", { staticClass: "tw-relative tw-pt-6", on: { "click": function($event) {
    return _vm.goEdu("Div_click");
  } } }, [_c("img", { attrs: { "src": __$_require_411b12ae__, "alt": "jiaoyu" } })]), _c("div", { staticClass: "tw-pt-4 tw-bg-white", attrs: { "data-anchor": "3" } }, [_vm._m(1), _vm._m(2), _vm._m(3), _c("ul", { staticClass: "tw-flex tw-justify-center tw-flex-wrap tw-w-[94%] tw-mx-auto tw-py-12" }, _vm._l(_vm.promoters, function(item) {
    return _c("li", { key: item.id, staticClass: "tw-w-1/2 tw-text-center tw-mb-6" }, [_c("img", { staticClass: "tw-w-2/3 md:tw-w-1/2 tw-rounded-[50%] tw-mx-auto tw-mb-8", attrs: { "src": item.url, "alt": "发起人" } }), _c("h4", { staticClass: "tw-text-lg bold tw-leading-5 md:tw-text-xl" }, [_vm._v(" " + _vm._s(item.promoter) + " ")]), _c("h4", { staticClass: "tw-text-lg tw-leading-5 md:tw-text-xl" }, [_vm._v(" " + _vm._s(item.name) + " ")]), _c("p", { staticClass: "regular tw-text-zinc-700 md:tw-text-lg" }, [_vm._v(" " + _vm._s(item.department) + " ")]), _c("p", { staticClass: "regular tw-text-zinc-700 md:tw-text-lg" }, [_vm._v(" " + _vm._s(item.position) + " ")])]);
  }), 0)]), _c("div", { staticClass: "tw-pt-12 global-bg", attrs: { "data-anchor": "4", "id": "anchor-4" } }, [_vm._m(4), _c("ul", { staticClass: "tw-flex tw-justify-center tw-flex-wrap tw-w-[94%] tw-mx-auto" }, _vm._l(_vm.arranges, function(item) {
    return _c("li", { key: item.id, staticClass: "tw-w-1/3 tw-text-center" }, [_c("h4", { staticClass: "tw-mt-8" }, [_c("span", { staticClass: "tw-relative tw-inline-block tw-mx-auto tw-text-lg md:tw-text-xl bold" }, [_vm._v(" " + _vm._s(item.title) + " "), item.id === 2 ? _c("span", { staticClass: "tw-absolute tw-text-[14px] tw-top-0 -tw-right-6 light" }, [_vm._v(" 2/3 ")]) : _vm._e()])]), _c("h4", { staticClass: "tw-text-lg bold tw-leading-5 md:tw-text-xl" }, [_vm._v(" " + _vm._s(item.subtitle) + " ")]), _c("p", { staticClass: "tw-mt-2 regular tw-text-zinc-600 md:tw-text-lg" }, [_vm._v(" " + _vm._s(item.date) + " ")]), _c("div", { staticClass: "tw-relative" }, [item.id !== 6 && item.id !== 3 ? _c("div", { staticClass: "tw-w-full tw-absolute tw-h-[1px] tw-left-1/2 tw-top-1/2 tw-bg-slate-600" }) : _vm._e(), _c("div", { staticClass: "tw-w-[20px] tw-relative tw-h-[20px] tw-mx-auto tw-mt-4 tw-rounded-[50%] tw-bg-green-500 tw-border tw-border-slate-600" })])]);
  }), 0)]), _c("div", { staticClass: "tw-pt-12 global-bg", attrs: { "data-anchor": "5", "id": "anchor-5" } }, [_c("h4", { staticClass: "tw-text-4xl bold" }, [_vm._v("活动话题")]), _c("div", { staticClass: "swiper-container tw-w-[94%]" }, [_c("ul", { staticClass: "swiper-wrapper tw-flex tw-justify-between tw-pt-8 tw-pb-8 tw-mx-auto tw-py-20" }, _vm._l(_vm.subjects, function(item) {
    return _c("li", { key: item.id, staticClass: "swiper-slide tw-p-4 tw-text-center topic-bg" }, [_c("h4", { staticClass: "tw-pt-4 md:tw-pt-8 tw-text-[18px] bold tw-leading-8 md:tw-text-2xl" }, [_vm._v(" " + _vm._s(item.title) + " ")]), _c("h4", { staticClass: "bold tw-text-zinc-600 md:tw-text-xl" }, [_vm._v(" " + _vm._s(item.subtitle) + " ")]), _c("h4", { staticClass: "bold tw-text-zinc-600 md:tw-text-xl" }, [_vm._v(" " + _vm._s(item.thirdtitle) + " ")]), _c("img", { staticClass: "tw-py-2", attrs: { "src": item.img, "alt": "" } }), _vm._l(item.subject, function(temp, index2) {
      return _c("div", { key: index2, staticClass: "tw-mt-4 tw-text-left" }, [_c("p", { staticClass: "bold md:tw-text-xl" }, [_c("span", { staticClass: "tw-text-orange-500" }, [_vm._v("#")]), _vm._v(" 话题 "), _c("span", [_vm._v(_vm._s(index2 === 0 ? "A" : "B"))])]), _c("p", { staticClass: "bold md:tw-text-lg" }, [_vm._v(" " + _vm._s(temp.title) + " ")]), _c("p", { staticClass: "regular md:tw-text-lg tw-text-zinc-700", domProps: { "innerHTML": _vm._s(temp.desc) } })]);
    })], 2);
  }), 0), _c("div", { staticClass: "swiper-button-next" }), _c("div", { staticClass: "swiper-button-prev" })])]), _vm._m(5), _c("div", { staticClass: "tw-bg-white tw-pt-12 tw-pb-4" }, [_c("h4", { staticClass: "tw-text-4xl bold" }, [_vm._v("期待作品")]), _c("div", { staticClass: "swiper-container tw-w-[94%] respect-swiper" }, [_c("ul", { staticClass: "swiper-wrapper tw-pt-12 tw-flex tw-justify-between tw-w-3/4 tw-mx-auto" }, _vm._l(_vm.works, function(item) {
    return _c("li", { key: item.id, staticClass: "swiper-slide tw-text-center tw-border tw-border-slate-900 global-bg" }, [_c("div", { staticClass: "tw-relative tw-py-4 tw-px-2 tw-border tw-border-slate-900 -tw-left-[7px] -tw-top-[7px] global-bg" }, [_c("h4", { staticClass: "tw-text-[16px] bold tw-py-4 md:tw-text-2xl" }, [_vm._v(" " + _vm._s(item.title) + " ")]), _c("p", { staticClass: "regular tw-text-zinc-700 md:tw-text-lg", domProps: { "innerHTML": _vm._s(item.desc) } })])]);
  }), 0), _c("div", { staticClass: "swiper-button-next" }), _c("div", { staticClass: "swiper-button-prev" })])]), _c("div", { staticClass: "tw-pt-12 tw-pb-16 tw-bg-white" }, [_c("div", { staticClass: "tw-w-[94%] tw-mx-auto" }, [_c("h4", { staticClass: "tw-text-4xl bold" }, [_vm._v("奖项设置")]), _c("div", { staticClass: "tw-mt-8 tw-p-4 border-settop" }, _vm._l(_vm.prices, function(item, index2) {
    return _c("div", { key: index2 }, [_c("div", { staticClass: "tw-flex tw-items-center tw-py-2" }, [_vm._m(6, true), _c("h4", { staticClass: "tw-text-lg bold tw-ml-2 md:tw-text-2xl" }, [_vm._v(" " + _vm._s(item.title) + " ")])]), _vm._l(item.data, function(temp, index3) {
      return _c("p", { key: index3, staticClass: "regular" }, [_c("span", { staticClass: "tw-inline-block tw-px-2 tw-text-zinc-800 lg:tw-text-base md:tw-text-[14px]", class: index3 === 0 ? "tw-border tw-border-zinc-500 bold" : "" }, [_vm._v(" " + _vm._s(temp) + " ")])]);
    })], 2);
  }), 0), _c("div", { staticClass: "tw-relative tw-p-4 border-setbottom" }, [_c("img", { staticClass: "tw-absolute tw-w-1/4 tw-right-[15%] tw-bottom-0 md:tw-right-[8%] md:-tw-bottom-4 moveup", attrs: { "src": __$_require_a44abdb2__, "alt": "music" } }), _c("h4", { staticClass: "tw-text-xl bold tw-pt-4 tw-text-left" }, [_vm._v(" 金, 银，铜奖其他奖项 ")]), _c("div", { staticClass: "tw-flex tw-pt-2" }, [_c("ul", _vm._l(_vm.otherPrice, function(item) {
    return _c("li", { key: item.title, staticClass: "tw-pb-4" }, [_c("h4", { staticClass: "tw-inline-block tw-border tw-border-zinc-500 tw-px-2 bold lg:tw-text-base md:tw-text-[14px]" }, [_vm._v(" " + _vm._s(item.title) + " ")]), _vm._l(item.data, function(temp, index2) {
      return _c("p", { key: index2, staticClass: "regular tw-text-zinc-800 lg:tw-text-base md:tw-text-[14px]" }, [_vm._v(" " + _vm._s(temp) + " ")]);
    })], 2);
  }), 0), _c("ul", _vm._l(_vm.otherPrice1, function(item) {
    return _c("li", { key: item.title, staticClass: "tw-p-2 tw-text-center" }, [_c("h4", { staticClass: "tw-inline-block tw-border tw-border-zinc-500 tw-px-2 bold lg:tw-text-base md:tw-text-[14px]" }, [_vm._v(" " + _vm._s(item.title) + " ")]), _vm._l(item.data, function(temp, index2) {
      return _c("p", { key: index2, staticClass: "regular tw-text-zinc-800 lg:tw-text-base md:tw-text-[14px]" }, [_vm._v(" " + _vm._s(temp) + " ")]);
    })], 2);
  }), 0)])]), _vm._l(_vm.otherList, function(item, index2) {
    return _c("div", { key: index2, staticClass: "tw-relative lg:tw-w-[43%] md:tw-w-[42%] tw-mt-6 tw-p-6 tw-border tw-border-slate-900 tw-rounded-e-full" }, [_c("img", { staticClass: "tw-absolute tw-w-1/5 tw-right-12 tw-bottom-0 movedown", attrs: { "src": item.src, "alt": "yinjiang-erji" } }), _c("div", { staticClass: "tw-flex tw-items-center" }, [_c("div", { staticClass: "tw-border tw-rounded-full tw-text-center tw-py-2 tw-px-4 tw-border-slate-900 bold", class: index2 === 0 ? "tw-bg-violet-300" : "tw-bg-orange-500" }, [_c("p", { staticClass: "tw-text-lg tw-leading-6 bold" }, [_vm._v(_vm._s(item.num) + " Teams")])]), _c("h4", { staticClass: "tw-text-lg bold tw-ml-2 md:tw-text-2xl" }, [_vm._v(" " + _vm._s(item.title) + " ")])]), _c("div", { staticClass: "tw-flex tw-pt-8 tw-justify-between" }, [_c("ul", _vm._l(item.list, function(temp, index3) {
      return _c("li", { key: index3, staticClass: "lg:tw-text-lg md:tw-text-[16px] light lg:tw-leading-8", class: index3 === 0 ? "tw-pb-12" : "" }, [_c("h4", { staticClass: "tw-inline-block tw-border tw-border-zinc-500 tw-px-2 bold lg:tw-text-base md:tw-text-[14px]" }, [_vm._v(" " + _vm._s(temp.title) + " ")]), _vm._l(temp.data, function(data2, index4) {
        return _c("p", { key: index4, staticClass: "regular tw-text-zinc-800 lg:tw-text-base md:tw-text-[14px]" }, [_vm._v(" " + _vm._s(data2) + " ")]);
      })], 2);
    }), 0), _c("ul", _vm._l(item.list1, function(temp, index3) {
      return _c("li", { key: index3, staticClass: "lg:tw-text-lg md:tw-text-[16px] light lg:tw-leading-8", class: index3 === 0 ? "tw-pb-12" : "" }, [_c("h4", { staticClass: "tw-inline-block tw-border tw-border-zinc-500 tw-px-2 bold lg:tw-text-base md:tw-text-[14px]" }, [_vm._v(" " + _vm._s(temp.title) + " ")]), _vm._l(temp.data, function(data2, index4) {
        return _c("p", { key: index4, staticClass: "regular tw-text-zinc-800 lg:tw-text-base md:tw-text-[14px]" }, [_vm._v(" " + _vm._s(data2) + " ")]);
      })], 2);
    }), 0)])]);
  })], 2)]), _c("div", { staticClass: "tw-relative tw-pt-12 global-bg", attrs: { "data-anchor": "6", "id": "anchor-6" } }, [_c("img", { staticClass: "tw-absolute tw-w-[30%] tw-right-8 tw-bottom-4 movedown", attrs: { "src": __$_require_6e67d7b4__, "alt": "pingwei-erji" } }), _c("h4", { staticClass: "tw-text-4xl bold" }, [_vm._v("评委团")]), _vm._m(7), _c("ul", { staticClass: "tw-flex tw-w-[94%] tw-flex-wrap tw-justify-evenly tw-items-center tw-mb-12" }, _vm._l(_vm.judges, function(item) {
    return _c("li", { key: item.id, staticClass: "tw-w-1/2 tw-pb-6 tw-text-center" }, [item.id !== 8 ? _c("img", { staticClass: "tw-rounded-[50%] tw-mx-auto tw-w-3/5", attrs: { "src": item.promoter, "alt": "发起人" } }) : _vm._e(), _c("p", { staticClass: "tw-text-[16px] bold tw-text-zinc-600" }, [_vm._v(" " + _vm._s(item.name) + " ")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v(" " + _vm._s(item.department) + " ")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v(" " + _vm._s(item.position) + " ")])]);
  }), 0)]), _vm._m(8), _vm._m(9)]);
};
var _sfc_staticRenderFns = [function() {
  var _vm = this, _c = _vm._self._c;
  return _c("div", { attrs: { "data-anchor": "1", "id": "anchor-1" } }, [_c("div", { staticClass: "tw-relative sound-bar-kv tw-w-full" }, [_c("img", { staticClass: "tw-w-full", attrs: { "src": __$_require_08c9c4f2__, "alt": "KV" } }), _c("img", { staticClass: "tw-absolute tw-w-[11vw] tw-left-[34%] tw-bottom-[18%] moveup", attrs: { "src": __$_require_45a1f8b8__, "alt": "kv-icon" } }), _c("img", { staticClass: "tw-absolute tw-w-[12vw] tw-right-[30%] tw-bottom-[24%] movedown", attrs: { "src": __$_require_45ce1a91__, "alt": "kv-icon" } }), _c("img", { staticClass: "tw-absolute tw-w-[10vw] tw-right-[23%] tw-bottom-[10%] moveup", attrs: { "src": __$_require_718bc11e__, "alt": "kv-icon" } }), _c("img", { staticClass: "tw-absolute tw-w-[8vw] tw-right-[15%] tw-bottom-[27%] movedown", attrs: { "src": __$_require_0e59efc4__, "alt": "kv-icon" } }), _c("img", { staticClass: "tw-absolute tw-w-[8vw] tw-right-[5%] tw-bottom-[10%] moveup", attrs: { "src": __$_require_d5d0a21c__, "alt": "kv-icon" } })])]);
}, function() {
  var _vm = this, _c = _vm._self._c;
  return _c("div", { staticClass: "tw-w-[94%] tw-relative tw-mx-auto tw-mt-6 tw-text-4xl bold" }, [_c("img", { staticClass: "tw-absolute tw-w-[120px] tw-left-1/2 md:tw-left-1/3 tw-bottom-0", attrs: { "src": __$_require_3def530c__ } }), _c("h4", { staticClass: "tw-relative tw-text-left bold" }, [_vm._v(" “企”梦索尼， "), _c("br"), _vm._v(" 携梦与索尼同行 ")]), _c("h4", { staticClass: "tw-relative tw-text-left tw-text-4xl bold" }, [_vm._v(" Start Your Dream "), _c("br"), _vm._v(" With Sony ")])]);
}, function() {
  var _vm = this, _c = _vm._self._c;
  return _c("div", { staticClass: "tw-w-[94%] tw-mx-auto tw-mt-8" }, [_c("img", { staticClass: "tw-mx-auto tw-mb-8", attrs: { "src": "https://fakeimg.pl/1200x500", "alt": "首页" } }), _c("h4", { staticClass: "tw-text-base tw-text-left bold tw-pb-2 md:tw-text-xl" }, [_vm._v(" 索尼于1946年， "), _c("br"), _vm._v("为了建立一个轻松自由愉快的理想工厂而成立 ")]), _c("p", { staticClass: "regular tw-text-base tw-text-zinc-700 md:tw-text-xl" }, [_vm._v(" 秉承着用创意和科技的力量感动世界的企业宗旨，"), _c("br"), _vm._v(" 在过去数十年中，索尼在游戏，音乐，影视消费类电子，动画等行业均有业务； 也包括其他新型的业务如动作捕捉系统Mocopi，空间现实显示屏等 ")]), _c("img", { staticClass: "tw-mx-auto tw-my-6", attrs: { "src": __$_require_0a91f887__, "alt": "logo" } }), _c("p", { staticClass: "regular tw-text-base tw-text-zinc-700 md:tw-text-xl" }, [_vm._v(" 索尼相信，年轻人在未来将会是引领潮流的重要群体之一。 因此我们希望索尼的产品/服务在未来可以更加契合当代年轻人的喜好与风格 ")])]);
}, function() {
  var _vm = this, _c = _vm._self._c;
  return _c("div", { staticClass: "tw-relative tw-mt-12 global-bg tw-pt-8 tw-pb-24 tw-overflow-hidden" }, [_c("div", { staticClass: "tw-w-[94%] tw-mx-auto md:tw-py-8" }, [_c("h4", { staticClass: "tw-text-lg bold tw-text-left md:tw-text-2xl" }, [_vm._v(' 索尼 未来畅想 "Sony & The Future" ')]), _c("h4", { staticClass: "tw-text-lg bold tw-text-left tw-pb-2 md:tw-text-2xl" }, [_vm._v(" 大学生创想大赛 ")]), _c("p", { staticClass: "regular tw-text-zinc-700 md:tw-text-lg" }, [_vm._v(" 期待能帮助拥有创意和憧憬的你，带着梦想和好奇心去开拓未来 ")]), _c("p", { staticClass: "regular tw-text-zinc-700 md:tw-text-lg" }, [_vm._v(" 年轻创作者们，请展示自己的创想和对未来的思考 ")]), _c("p", { staticClass: "regular tw-text-zinc-700 md:tw-text-lg" }, [_vm._v(" 让我们携手一起去体会科技与创想的魅力 ")]), _c("img", { staticClass: "tw-absolute tw-w-[58%] tw-right-0 tw-bottom-0", attrs: { "src": __$_require_23200d24__, "alt": "orange" } })])]);
}, function() {
  var _vm = this, _c = _vm._self._c;
  return _c("h4", { staticClass: "tw-text-center" }, [_c("span", { staticClass: "tw-relative tw-inline-block tw-mx-auto tw-text-4xl bold" }, [_vm._v(" 活动安排 "), _c("span", { staticClass: "tw-absolute tw-text-lg tw-top-0 -tw-right-3 light" }, [_vm._v(" 1 ")])])]);
}, function() {
  var _vm = this, _c = _vm._self._c;
  return _c("div", { staticClass: "tw-pt-12 tw-bg-white" }, [_c("h4", { staticClass: "tw-text-center" }, [_c("span", { staticClass: "tw-relative tw-inline-block tw-mx-auto tw-text-4xl bold" }, [_vm._v(" 评审标准 "), _c("span", { staticClass: "tw-absolute tw-text-lg tw-top-0 -tw-right-3 light" }, [_vm._v(" 4 ")])])]), _c("img", { attrs: { "src": __$_require_1c9844bc__, "alt": "pingshen" } })]);
}, function() {
  var _vm = this, _c = _vm._self._c;
  return _c("div", { staticClass: "tw-border tw-rounded-full tw-text-center tw-py-1 tw-px-4 tw-border-slate-900 regular tw-bg-green-500" }, [_c("p", { staticClass: "tw-text-lg tw-leading-6" }, [_vm._v("1 Teams")])]);
}, function() {
  var _vm = this, _c = _vm._self._c;
  return _c("div", { staticClass: "tw-w-[94%] tw-mt-8 tw-mx-auto tw-flex tw-justify-center" }, [_c("ul", { staticClass: "tw-flex tw-justify-center tw-items-center" }, [_c("li", { staticClass: "tw-w-[30%] md:tw-w-1/2 tw-text-center" }, [_c("img", { staticClass: "tw-rounded-[50%] tw-mx-auto", attrs: { "src": __$_require_bc4ca446__, "alt": "发起人" } }), _c("p", { staticClass: "tw-text-[16px] bold tw-text-zinc-600" }, [_vm._v("吉田 武司")]), _c("p", { staticClass: "tw-text-zinc-600" }, [_vm._v("索尼(中国)有限公司")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v("总裁")])])])]);
}, function() {
  var _vm = this, _c = _vm._self._c;
  return _c("div", { staticClass: "tw-bg-white tw-pb-12" }, [_c("div", { staticClass: "tw-relative tw-scale-90" }, [_c("p", { staticClass: "lg:tw-text-xs light tw-text-zinc-600 tw-leading-5" }, [_vm._v(" 1. 活动的安排如有变动，请以官方实际安排和告知为准 ")]), _c("p", { staticClass: "lg:tw-text-xs light tw-text-zinc-600 tw-leading-5" }, [_vm._v(" 2. 参赛者在本活动过程中独立产生的知识产权，包括但不限于在中国大陆地区内的专利权（含发明、实用新型和外观设计）以及专利申请权、商标权、著作权、技术秘密（know-how）及相关法律法规规定的全部权利（包括今后因法律法规的修改所赋予的权利，下同）以及其他一切知识产权均归参赛者享有；尽管有上述规定，参赛者许可索尼和/或其关联公司以及上述主体参股或控股的公司在内主体在全世界范围内永久且免费地、不受次数限制地、可转授权地、可分许可地进行盈利性和/或非盈利性的使用，且参赛者同意索尼和/或其关联公司以及上述主体参股或控股的公司在内主体就该等知识产权享有优先购买权。 ")]), _c("p", { staticClass: "lg:tw-text-xs light tw-text-zinc-600 tw-leading-5" }, [_vm._v(" 3. 避免疑义，“本活动过程中”指从活动报名至本活动结束之日止。“本活动过程中独立产生的知识产权”包括但不限于本活动的主题、参赛者的选题以及技术方案等所有与本活动有关联的知识产权和参賽作品 ")]), _c("p", { staticClass: "lg:tw-text-xs light tw-text-zinc-600 tw-leading-5" }, [_vm._v(" 4. 评审标准的打分细则请参考【活动声明与细则】文档 ")])])]);
}, function() {
  var _vm = this, _c = _vm._self._c;
  return _c("div", { staticClass: "tw-py-12 global-bg" }, [_c("div", { staticClass: "tw-w-[94%] tw-ml-[13%] tw-flex tw-justify-center" }, [_c("ul", { staticClass: "tw-flex-1" }, [_c("li", [_c("h4", { staticClass: "tw-text-lg bold tw-text-left tw-text-zinc-700 tw-leading-8" }, [_vm._v(" 主办单位 ")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v("索尼（中国）有限公司")])]), _c("li", { staticClass: "tw-pt-4" }, [_c("h4", { staticClass: "tw-text-lg bold tw-text-left tw-text-zinc-700 tw-leading-10" }, [_vm._v(" 承办单位 ")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v("匠技新（上海）孵化器")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v("管理有限公司")])]), _c("li", { staticClass: "tw-pt-4" }, [_c("img", { staticClass: "tw-w-[90%]", attrs: { "src": __$_require_7d9f27f4__, "alt": "contact" } })])]), _c("ul", { staticClass: "tw-flex-1" }, [_c("li", [_c("h4", { staticClass: "tw-text-lg bold tw-text-left tw-text-zinc-700" }, [_vm._v(" 协办单位 ")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v("上海交通大学")])]), _c("li", { staticClass: "tw-pt-4 tw-mx-auto" }, [_c("h4", { staticClass: "tw-text-lg bold tw-text-left tw-text-zinc-700 tw-leading-10" }, [_vm._v(" 支持单位 ")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v("复旦大学")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v("同济大学")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v("上海大学")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v("长三角高校合作联盟")]), _c("p", { staticClass: "regular tw-text-zinc-600" }, [_vm._v("（排名无先后）")])]), _c("li", { staticClass: "tw-pt-4 tw-text-lg bold tw-text-zinc-600" }, [_vm._v("咨询与联系")]), _c("li", { staticClass: "tw-text-zinc-500 regular" }, [_vm._v("scnics@sony.com")])])])]);
}];
var __component__ = /* @__PURE__ */ normalizeComponent(
  _sfc_main,
  _sfc_render,
  _sfc_staticRenderFns,
  false,
  null,
  "277fcd07",
  null,
  null
);
const App = __component__.exports;
const Vue = window["Vue"];
new Vue({
  render: (h) => h(App)
}).$mount("#app");
export {
  __vite_legacy_guard
};
